C#:解析具有相同标记的嵌套XML文件

时间:2015-12-06 11:16:40

标签: c# asp.net xml

XML文件:

<?xml version="1.0" encoding="utf-8"?>
<grid table="Declaration">
    <primary_key>Some String</primary_key>
    <query>
        Some String
    </query>
    <grid table="GoodsItem">
        <foreign_key>Some String</foreign_key>
        <primary_key>Some String</primary_key>
        <query>
            Some String
        </query>
        <grid table="GoodsItemGUID">
            <foreign_key>Some String</foreign_key>
            <foreign_key>Some String</foreign_key>
            <primary_key>Some String</primary_key>
            <query>
                Some String
            </query>
        </grid>
    </grid>
</grid>

正如你所看到的那样&#34; grid&#34;元素包含相同的&#34;网格&#34;元素,也可以包含&#34; grid&#34;元素,所以我想通常不仅为这个xml文件解析这个xml文件。什么是最好的方法呢?

我试过这段代码,但它只需要网格元素,例如它并不知道&#34; GoodsItem&#34;是&#34;宣言&#34;的孩子。这就是我想解决的主要问题。

MyClass curr = new MyClass ();

XmlNodeList gridNodes = xmlDocument.GetElementsByTagName("grid");
            foreach (XmlNode bookNode in gridNodes)
            {
                MyClass child = new MyClass ();
                curr.Child = child;
                curr = child;
                curr.Table = bookNode.Attributes["table"].Value;
                curr.PrimaryKey = bookNode["primary_key"].InnerText;
                curr.Query = bookNode["query"].InnerText;
            }

1 个答案:

答案 0 :(得分:0)

您可以使用bookNode.ParentNode访问父节点 您可以通过检查父节点的属性Name是否为<grid>来检查父节点是否为grid

if (bookNode.ParentNode != null && bookNode.ParentNode.Name == "grid")
{
     XmlNode parent_grid = bookNode.ParentNode;
     // do something with parent_grid
}