2012-03-03 44 views
1

谁能告诉我,我做错了什么我这儿过得试图生成在xml.My XML架构中的系统信息是这样的错误中WriteXML

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

在互联网Snooping的,我发现这个code.But很难实现它面临 问题: “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(); 

回答

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"); 
+0

谢谢工作perfectley – Cesar 2012-03-03 12:13:57

0

你的代码不能正常工作,因为你不能在WriteStartElement并在WriteElementString第一个参数使用带有空格和标点符号值。同样对于每个WriteStartElement,您需要添加WriteEndElement

+0

writer.WriteElementString( “版本”,Environment.OSVersion.ToString());运行良好,虽然 – Cesar 2012-03-03 11:02:56

+0

@ user1235546这是因为“版本”中不包含不能在WriteElementString'的'第一个参数使用空格和标点符号(它与我的回答上面的文字清晰?)。 – 2012-03-03 11:26:03