Класс, чтобы остановить синтаксического анализатора XML с преобразованием в UTF-8 лица шестнадцатеричных символов


Я пытаюсь остановить парсер XML преобразовать в UTF-8 enitity hex-кодов на свой альтернативный характер, а также не добавляя дополнительное пространство в самозакрывания узлов после разбора.

Я создал класс для этого (скажем DB_class), как показано ниже

using System.IO;
using System.Xml.Linq;
class tDocument:XDocument
{
    string input_string;
    int option;


    public tDocument(string input,int opt)
    {
        this.input_string=input;
        this.option=opt;
    }
    public static XDocument tParse(string path)
    {
        string file_content = escape_string(File.ReadAllText(path), 0);
        XDocument doc = XDocument.Parse(file_content, LoadOptions.PreserveWhitespace);
        return doc;
    }
    public static void tSave(string path, XDocument doc)
    {
        doc.Save(path, SaveOptions.DisableFormatting);
        File.WriteAllText(path, escape_string(doc.ToString(), 1));
    }
    public static string escape_string(string input_string, int option)
    {
        switch (option)
        {
            case 0:
                return input_string.Replace("&", "&");
            case 1:
                var x = input_string.Replace(" />", "/>");
                var y = x.Replace("&", "&");
                return y;

            default:
                return null;

        }
    }
}

Вот случайный пример, чтобы показать, как я использую этот класс, чтобы делать вещи (в принципе программа получает значение узла идентификатор путем сопоставления имени с info.xml и добавляя его к соответствующему имена атрибутов код в XML-файл, который я хочу изменить)

XDocument myfile=tDocument.tParse(@"D:\test\APril 2018\testing.xml");
var names=myfile.Descendants("name").ToList();
foreach (var name in names)
{
    XDocument infofile=tDocument.tParse(@"D:\test\APril 2018\info.xml");
    var data=infofile.Descendants("student").Where(x=>x.Element("s-name").Value==name.Value).Select(y=>y.Element("ID").Value).First();
    name.Add(new XAttribute("id",data));
}
tDocument.tSave(@"D:\test\APril 2018\testing.xml",myfile);
Console.ReadLine();

Вот testing.xml и info.xml

Что я хочу знать, как я могу сделать мой класс (DB_class) более эффективной, а также, если есть лучший способ делать то, что класс делает?



233
1
задан 13 апреля 2018 в 10:04 Источник Поделиться
Комментарии