Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# c中的WRITEXML错误#_C#_Xml_Visual Studio 2010 - Fatal编程技术网

C# c中的WRITEXML错误#

C# c中的WRITEXML错误#,c#,xml,visual-studio-2010,C#,Xml,Visual Studio 2010,有人能告诉我我做错了什么吗?我试图用xml生成一个系统信息。我的xml模式是这样的 <root> <system> <applications> </applications> </system> </root> 也不起作用 writer.WriteStartElement(".Net Framework 4", NET_FRAMEWORK.ToString()); 给出了无法

有人能告诉我我做错了什么吗?我试图用xml生成一个系统信息。我的xml模式是这样的

<root>
   <system>
        <applications>
        </applications>
   </system>
</root>
也不起作用

writer.WriteStartElement(".Net Framework 4", NET_FRAMEWORK.ToString());
给出了无法写入十六进制值0x20的错误 NET_框架是一个布尔值。 基本上我搞砸了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();

您的代码无法工作,因为在
writeStarteElement
WriteElementString
的第一个参数中不能使用带空格和标点的值。同样,对于每个
writeStarteElement
您需要添加
WriteEndElement

,因为您不能在
writeStarteElement
WriteElementString
的第一个参数中使用带空格和标点的值,所以代码不起作用。另外,对于每个
writeStarteElement
,您需要添加
writeDelete

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

请注意,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");
writer.WriteElementString(“Ver”,Environment.OSVersion.ToString());运行良好though@user1235546这是因为“Ver”不包含空格和标点符号,这些空格和标点符号不能在
WriteElementString
的第一个参数中使用(从我上面的答案中可以清楚地看到吗?).writer.WriteElementString(“Ver”,Environment.OSVersion.ToString());运行良好though@user1235546这是因为“Ver”不包含空格和标点符号,这些空格和标点符号不能在
WriteElementString
的第一个参数中使用(从我上面的答案文本中是否清楚?)。