0

我有像这样的xml:

<?xml version="1.0" encoding="utf-8" ?> 
<response list="true">
    <count>10748</count> 
    <post>
        <id>164754</id>
        <text></text> 
        <attachments list="true">
            <attachment>
                <type>photo</type> 
                <photo>
                    <pid>302989460</pid> 
                </photo>
            </attachment>
        </attachments>

我需要检查<attachment>我的<post>. 我收到所有这样的帖子:

XmlNodeList posts = XmlDoc.GetElementsByTagName("post");
foreach (XmlNode xnode in posts)
{
    //Here I have to check somehow
}

如果帖子中没有<attachment>节点,我想<text>取而代之。

4

3 回答 3

1

如果从 an 更改为 an XmlDocumentXElement则可以使用 LINQ 查询来获取attachment节点数。

//load in the xml
XElement root = XElement.Load("pathToXMLFile"); //load from file
XElement root = XElement.Parse("someXMLString"); //load from memory

foreach (XElement post in root.Elements("post"))
{
    int numOfAttachNodes = post.Elements("attachments").Count();

    if(numOfAttachNodes == 0)
    {
        //there is no attachment node
    }
    else
    {
        //something if there is an attachment node
    }
}
于 2013-05-09T00:49:37.870 回答
0

你可以尝试一个 linq 查询它会是这样的

var result = XmlDoc.Element("response")
                   .Elements("post").Select(item => item.Element("attachments")).ToList();

foreach(var node in result)
{

}
于 2013-05-09T01:08:20.277 回答
-1

要检查“帖子”中是否有任何节点:

if(posts.Count == 0)
{
    // No child nodes!
}

您可以在开始循环之前执行此操作。

于 2013-05-09T00:33:28.867 回答