如何遍历XML中的每个节点并使用C#将每个标记映射到新XML文件中的新标记?

时间:2015-06-30 07:03:49

标签: c# xml parsing

我需要将XML文件(遵循特定框架)转换为OWL文件(也具有XML格式)。要进行此转换,我需要编写一个C#代码。

我无法遍历XML文件中的每个节点,以便将其映射到新文件中,也无法理解如何获取现有XML中的标记名称。

XML示例是:

<ECClass name="Person">
    <ECAttributes>
        <ECObject ID="person1" size="20">
        </ECObject>
    </ECAttributes>
    <ECAttributes>
    </ECAttributes>
</ECClass>

我想把它映射成这样的东西:

<Class reference="Person">
    <Property>
        <Instance ID="person1">
        </Instance>
    </Property>
    <Property>
    </Property>
</Class>

这些只是示例,而不是真正的XML。

主要问题是如何遍历每个标签而不知道它有多少个孩子。我读了一些文章,但大多数都只针对特定的水平。例如:

XmlNodeList nodes = root.SelectNodes("/ECClass");
foreach (XmlNode node in nodes)
{

}

我需要逐个浏览每个标记,直到完成所有子标记,以便我可以相应地映射新的XMl。

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

解析c#中的每个节点,你可以使用递归。只需将此函数传递给根节点

即可
public void findAllNodes(XmlNode node)
{
    CreateNode(node.name);
    foreach (XmlNode n in node.ChildNodes)
        findAllNodes(n);
} 

您必须创建一个新的xml文件。你可以使用这样的东西:

XmlDocument xmlDoc = new XmlDocument();

然后实现CreateNode函数。它应该是这样的:

public void CreateNode(string NodeName)
{
     if(NodeName == "something")
     {
         XmlNode rootNode = xmlDoc.CreateElement("something_else");
     }
     .....
}