c#中的WRITEXML错误

时间:2012-03-03 10:25:12

标签: c# xml visual-studio-2010

任何人都可以告诉我这里我做错了什么。我正在尝试在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 个答案:

答案 0 :(得分:1)

请注意,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");

答案 1 :(得分:0)

您的代码无效,因为您无法在WriteStartElementWriteElementString的第一个参数中使用带空格和标点符号的值。另外,对于每个WriteStartElement,您需要添加WriteEndElement