根据XmlElement上的节点在c#中解析XML

根据XmlElement上的节点在c#中解析XML,c#,C#,我需要解析以下xml: <?xml version="1.0" encoding="UTF-8"?> <Response> <Items> <Attr></Attr> <Items> <Goods> <Attr></Attr> <Attr></Attr> <Attr>

我需要解析以下xml:

<?xml version="1.0" encoding="UTF-8"?>
<Response>
    <Items>
        <Attr></Attr>
    <Items>
    <Goods>
        <Attr></Attr>
        <Attr></Attr>
        <Attr></Attr>
    </Goods>    
</Response>

此xml存储在
XmlReader输出
对象上。
是否有任何函数可以获取第一个节点元素项并将其存储在xml元素对象中,例如
xmlement1
。并通过
xmlement1
解析/循环并执行操作。

是的,使用XmlDocument:

XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load("<<PathToXmlFileOnDisk>>");

如果可以使用LINQ转换为XML:

XDocument doc = XDocument.Load(xml);

XElement xelem1 = doc.Root.Element("Items");

foreach (XElement elem in xelem1.Elements())
    Console.WriteLine("Name: {0}, value: {1}", elem.Name, elem.Value);

为什么不把它读入
XmlDocument
并从那里开始呢?如果它是那么小,它将是最有效的方式。请不要将reader对象命名为
output
,因为它们显然是输入。你也可以使用递归来查看每个子对象,然后它的子对象和你的停止情况是节点不再有子对象或者你可以将其与我们使用LINQ时必须使用任何Dll吗???@user3383301-不,只需使用System.Xml.Linq添加

foreach(XmlNode node in xmlDoc.SelectSingleNode("./Response").ChildNodes)
{
   ... //Once for each node under Response, then (Ex: Items has its own ChildNodes)
}
XDocument doc = XDocument.Load(xml);

XElement xelem1 = doc.Root.Element("Items");

foreach (XElement elem in xelem1.Elements())
    Console.WriteLine("Name: {0}, value: {1}", elem.Name, elem.Value);