为初学者提供复杂的XML和命名空间

本文关键字:XML 命名空间 复杂 初学者 | 更新日期: 2023-09-27 18:21:10

我从客户端收到了一个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");
...

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

为初学者提供复杂的XML和命名空间

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

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...