Ошибка WRITEXML в c # - PullRequest
       2

Ошибка WRITEXML в c #

1 голос
/ 03 марта 2012

Может кто-нибудь сказать мне, что я делаю не так здесь. Я пытаюсь сгенерировать системную информацию в xml. Моя XML-схема выглядит так

<root>
   <system>
        <applications>
        </applications>
   </system>
</root>

Просматривая в интернете, я нашел этот код. Но его трудно реализовать возникшие проблемы: «b» - это строка, которую я получаю из номера версии regedit.exe

writer.WriteElementString("Execute Bit Length", "64");

Также не работает

writer.WriteStartElement(".Net Framework 4", NET_FRAMEWORK.ToString());

дает мне ошибку не может записать шестнадцатеричное значение 0x20 NET_FRAMEWORK - это логическое значение. В основном я облажался с XML

using (XmlWriter writer = XmlWriter.Create("sys_info.xml"))
                {


                    writer.WriteStartDocument();
                    writer.WriteStartElement("System");



                    writer.WriteStartElement("OS");

                    writer.WriteElementString("Ver", Environment.OSVersion.ToString());
                    writer.WriteElementString("Execute Bit Length", "64");
                    writer.WriteElementString("Registry version", b.ToString());


                    writer.WriteEndElement();

                    writer.WriteStartElement("APPCHECK");
                    writer.WriteStartElement(".Net Framework 4", NET_FRAMEWORK.ToString());
                    writer.WriteStartElement("PDF reader", PDF_READ.ToString());
                    writer.WriteStartElement("internet Explorer Version", IE.ToString());
                    writer.WriteEndElement();
                    writer.WriteEndDocument();

Ответы [ 2 ]

1 голос
/ 03 марта 2012

Обратите внимание, что пробелы не допускаются в именах узлов XML, поэтому вам необходимо изменить или удалить их.

Также я бы порекомендовал вам попробовать Linq to XML:

var xDocument = new XDocument(
    new XElement("root", 
        new XElement("System", 
            new XElement("OS",
                new XElement("Ver", Environment.OSVersion.ToString()), 
                new XElement("Execute_Bit_Length", "64"),
                new XElement("Registry_version", b) 

                ),
            new XElement("APPCHECK",
                new XElement("NET_Framework_4", NET_FRAMEWORK),
                new XElement("PDF_Reader", PDF_READ),
                new XElement("Internet_Explorer_Version", IE)
            )
        )));

xDocument.Save("sys_info.xml");
0 голосов
/ 03 марта 2012

Ваш код не работает, так как вы не можете использовать значения с пробелами и пунктуацией в WriteStartElement и в первом аргументе WriteElementString. Также для каждого WriteStartElement нужно добавить WriteEndElement.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...