0

我想获取Photo当前Property标签 xml 中的所有标签。

XML

<Properties>
    <Property>
        <Photos>
            <Photo>
            </Photo>
        </Photos>
    </Property>
    <Property>
        <Photos>
            <Photo>
            </Photo>
        </Photos>
    </Property>
    <Property>
        <Photos>
            <Photo>
            </Photo>
        </Photos>
    </Property>
</Properties>

代码

xmlnode = xmldoc.GetElementsByTagName("Property");
for (int i = 0; i < xmlnode.Count - 1; i++)
{
    XmlNodeList xmlNode2;                            
    xmlNode2 = xmldoc.GetElementsByTagName("Photo");

    // I wanna get all the Photo tag that are inside the current Property tag
    for (int j = 0; j < xmlNode2.Count - 1; j++)
    {
        // Get the total of tags called Photo in my XML      
    }
}

但是在我的代码中,我得到了Photos所有XML文件中的标签总数,而不是当前Property标签中的标签总数。

我怎样才能做到这一点 ?

4

2 回答 2

1

请注意,选择所有Property元素的代码与获取Photo元素的代码相同。

代替使用索引,您可以依靠 XPath 来处理您的 XML 文档,如下所示:

// Starting XPath expression with a slash means: "starting at document element"
foreach (XmlElement property in xmldoc.SelectNodes("/Properties/Property"))
{
    Console.WriteLine("Property");

    // Without a starting slash, you'll use current node context
    foreach (XmlElement photo in property.SelectNodes("Photos/Photo"))
    {
        Console.WriteLine("\tPhoto");
    }
}

输出:

Property
    Photo
Property
    Photo
Property
    Photo
于 2013-07-04T19:11:02.987 回答
0
using System.Linq;
using System.Xml.Linq;

public void ProcessPhotos() {
    XDocument xDoc = XDocument.Load("<path to your xml file");
    foreach(XElement xProperty in xDoc.Descendants("Property")) {
        // goes through all Property xml elements
        foreach(XElement xPhoto in xProperty.Descendants("Photo")) {
            // and process all photos in current Property element
        }
    }
}
于 2013-07-04T19:21:34.443 回答