我有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>
。
答案 0 :(得分:1)
如果您从XmlDocument
更改为XElement
,则可以使用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
}
}
答案 1 :(得分:0)
你可以尝试一个linq查询,就像这样
var result = XmlDoc.Element("response")
.Elements("post").Select(item => item.Element("attachments")).ToList();
foreach(var node in result)
{
}
答案 2 :(得分:-1)
检查“帖子”中是否有任何节点:
if(posts.Count == 0)
{
// No child nodes!
}
您可以在开始循环之前执行此操作。