复杂的XML与初学者的命名空间

时间:2014-09-09 17:24:24

标签: c# xml xml-namespaces

我从客户端收到了一个XML文件,我必须使用C#重现它。 我今天开始阅读有关XML文件的内容,我将去任何地方:/ 我正在使用XMLDocument,因为我认为它很有用而且不那么复杂。 也许你可以帮助我们了解如何获得如下的表达:作为根元素。

<DeviceDescription>
<Types namespace="localTypes"/>
<Strings namespace="Unit">
    <Language lang="de-DE"/>
    <Language lang="en-EN"/>
</Strings>
<Strings namespace="localStrings_child_-1_1">
    <Language lang="de-DE">
        <String identifier="50">Drehmoment</String>
    </Language>
    <Language lang="en-EN">
        <String identifier="50">Torque</String>
    </Language>
</Strings>

<Files namespace="localFiles">
    <Language lang="en">
        <File fileref="local" identifier="NUM_ICO">
             <LocalFile>Motor.ico</LocalFile>
        </File>
    </Language>
</Files>

我的部分代码:

//Declaration of the XML Document
XmlDocument doc = new XmlDocument(); 
XmlNode declaration = doc.CreateXmlDeclaration("1.0", "UNICODE", null);
doc.AppendChild(declaration);

//Name of the Root
XmlNode rootNode = doc.CreateElement("DeviceDescription");
doc.AppendChild(rootNode);

//First Node "Types"
XmlNode typesNode = doc.CreateElement("Types");
XmlAttribute typesAttribute = doc.CreateAttribute("namespace");
typesAttribute.Value = "localTypes";
typesNode.Attributes.Append(typesAttribute);
rootelement.AppendChild(typesNode);

//Second Node "Strings"
XmlNode strings1Node = doc.CreateElement("Strings");
XmlAttribute strings1Attribute = doc.CreateAttribute("namespace");
strings1Attribute.Value = "Unit";
strings1Node.Attributes.Append(strings1Attribute);
rootelement.AppendChild(strings1Node);

//Third Node "Strings"
XmlNode stringsNode2 = doc.CreateElement("Strings");
...

//Third Node "Files"
XmlNode priceNode = doc.CreateElement("Files");
...

我知道这一切都是错的,因为我无法编译它,也许有人可以帮助我。谢谢!

1 个答案:

答案 0 :(得分:1)

您可以运行此代码来生成所需的项目,并查看控制台中内置的输出:

XmlDocument doc = new XmlDocument();            
XmlDeclaration xmlDeclaration = doc.CreateXmlDeclaration("1.0", "UNICODE", null);
XmlElement root = doc.DocumentElement;
doc.InsertBefore(xmlDeclaration, root);

生成根元素的代码......

XmlElement rootelement = doc.CreateElement(string.Empty, 
                         "DeviceDescription", string.Empty);
doc.AppendChild(rootelement);

XmlNode typesNode = doc.CreateElement("Types");
XmlAttribute typesAttribute = doc.CreateAttribute("namespace");
typesAttribute.Value = "localTypes";
typesNode.Attributes.Append(typesAttribute);
rootelement.AppendChild(typesNode);

代码显示形成的字符串......

Console.WriteLine(doc.OuterXml);
Console.WriteLine("Press any key to exit...");
Console.Read();

控制台输出:

<?xml version="1.0" encoding="UNICODE"?><DeviceDescription><Types namespace="loc
alTypes" /></DeviceDescription>
Press any key to exit...