Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从xml节点获取子节点_C#_Xml - Fatal编程技术网

C# 从xml节点获取子节点

C# 从xml节点获取子节点,c#,xml,C#,Xml,我有如下xml: 10748 164754 照片 302989460 我需要检查我的中是否有。 我收到的所有帖子都是这样的: XmlNodeList posts=XmlDoc.GetElementsByTagName(“post”); foreach(帖子中的xmlnodexnode) { //我得查一下 } 如果帖子中没有节点,我想取而代之的是它的。要检查“帖子”中是否有节点,请执行以下操作: if(posts.Count == 0) { // No child nodes! }

我有如下xml:


10748
164754
照片
302989460
我需要检查我的
中是否有
。 我收到的所有帖子都是这样的:

XmlNodeList posts=XmlDoc.GetElementsByTagName(“post”);
foreach(帖子中的xmlnodexnode)
{
//我得查一下
}

如果帖子中没有
节点,我想取而代之的是它的

要检查“帖子”中是否有节点,请执行以下操作:

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

可以在启动循环之前执行此操作。

如果从
XmlDocument
更改为
XElement
,则可以使用LINQ查询来获取
附件
节点的数量

//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
    }
}

您可以尝试linq查询,如下所示

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

foreach(var node in result)
{

}

你想要什么?元素或值的列表?-1。这会检查子节点的总数,但不会区分
附件
节点和
文本
节点。问题是他的现有变量使用
XmlDocument
而不是
XElement
。这就是为什么我建议使用后者。