Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/272.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# 在C中使用XmlReader读取特定深度的XML元素#_C#_.net_Xmlreader - Fatal编程技术网

C# 在C中使用XmlReader读取特定深度的XML元素#

C# 在C中使用XmlReader读取特定深度的XML元素#,c#,.net,xmlreader,C#,.net,Xmlreader,我有一个XML文件,其中一些节点位于不同的深度。我需要一个代码来只读取特定的深度节点,而不是全部,并且只能通过在C#中使用XmlReader来读取 有人能帮我吗 下面是我的XML结构。我只想读取“Depth2”节点 您可以使用以下功能: var result = XDocument.Load("data.xml").Root .Descendants("Depth2"); 它将为您找到xml的根目录下的所有Depth2元素 对于XmlReader方

我有一个XML文件,其中一些节点位于不同的深度。我需要一个代码来只读取特定的深度节点,而不是全部,并且只能通过在C#中使用XmlReader来读取

有人能帮我吗

下面是我的XML结构。我只想读取“Depth2”节点

您可以使用以下功能:

var result = XDocument.Load("data.xml").Root
                      .Descendants("Depth2");
它将为您找到xml的
根目录下的所有
Depth2
元素


对于
XmlReader
方式,您可以:

List<XmlNode> nodes = new List<XmlNode>();
using (var reader = XmlReader.Create("data.xml"))
{
    XmlDocument document = new XmlDocument();
    while (reader.Read())
    {
        if (reader.Depth == 2 && reader.NodeType == XmlNodeType.Element)
        {
            XmlNode node = document.CreateNode(XmlNodeType.Element, reader.Name, "");
            //Here I just added all the inner xml but you can do whatever you need
            node.InnerXml = reader.ReadInnerXml();

            nodes.Add(node);
        }
        reader.MoveToElement();
    }
}
List节点=新建列表();
使用(var reader=XmlReader.Create(“data.xml”))
{
XmlDocument document=新的XmlDocument();
while(reader.Read())
{
if(reader.Depth==2&&reader.NodeType==XmlNodeType.Element)
{
XmlNode=document.CreateNode(XmlNodeType.Element,reader.Name,“”);
//这里我刚刚添加了所有的内部xml,但是您可以做任何您需要的事情
node.InnerXml=reader.ReadInnerXml();
nodes.Add(node);
}
reader.MoveToElement();
}
}

您尝试过什么?你查了什么?还请添加您的xmlHi Gilad Green示例,感谢您的快速响应。
var result = XDocument.Load("data.xml").Root
                      .Descendants("Depth2");
List<XmlNode> nodes = new List<XmlNode>();
using (var reader = XmlReader.Create("data.xml"))
{
    XmlDocument document = new XmlDocument();
    while (reader.Read())
    {
        if (reader.Depth == 2 && reader.NodeType == XmlNodeType.Element)
        {
            XmlNode node = document.CreateNode(XmlNodeType.Element, reader.Name, "");
            //Here I just added all the inner xml but you can do whatever you need
            node.InnerXml = reader.ReadInnerXml();

            nodes.Add(node);
        }
        reader.MoveToElement();
    }
}