C# 如何在不知道其名称的情况下读取特定XmlNode
找不到具体的答案 下面是一个解决我的问题的Xml示例C# 如何在不知道其名称的情况下读取特定XmlNode,c#,text,xmlreader,xmlnode,C#,Text,Xmlreader,Xmlnode,找不到具体的答案 下面是一个解决我的问题的Xml示例 <Rectangle> <elementcolor>blue</elementcolor> <elementwidth>200</elementwidth> </Rectangle> <Line> <elementcolor>red</elementcolor> <elementwidth>1
<Rectangle>
<elementcolor>blue</elementcolor>
<elementwidth>200</elementwidth>
</Rectangle>
<Line>
<elementcolor>red</elementcolor>
<elementwidth>150</elementwidth>
</Line>
这将返回我所有的Xml节点,但我只希望那些有一个节点作为ChildNode的节点,我如何才能做到这一点
提前感谢不要使用
XmlTextReader
。使用新的LINQ到XML API:
XDocument document = XDocument.Load(file);
List<XElement> elementsWithChildren = document.Descendants()
.Where(x => x.Elements().Any());
XDocument document=XDocument.Load(文件);
List elementsWithChildren=document.subscriptions()
其中(x=>x.Elements().Any());
您可以使用linq2xml来实现
var xml = @"<wrapper>
<Rectangle>
<elementcolor>blue</elementcolor>
<elementwidth>200</elementwidth>
</Rectangle>
<Rectangle/>
<Line/>
<Line>
<elementcolor>red</elementcolor>
<elementwidth>150</elementwidth>
</Line>
</wrapper>";
var elements = XElement
.Parse(xml)
.Descendants()
.Where(o => o.HasElements);
elements.Dump();
var xml=@”
蓝色
200
红色
150
";
变量元素=XElement
.Parse(xml)
.后代()
其中(o=>o.has元素);
元素Dump();
输出
<Rectangle>
<elementcolor>blue</elementcolor>
<elementwidth>200</elementwidth>
</Rectangle>
<Line>
<elementcolor>red</elementcolor>
<elementwidth>150</elementwidth>
</Line>
蓝色
200
红色
150
以前从未听说过Linq,只是在我的项目中添加了System.Xml.Linq引用。但是.where查询没有被重新确认,是不是我遗漏了什么?@Rafael您还需要添加一个带有System.Linq的using语句。以前从未听说过Linq,只是在我的项目中添加了System.Xml.Linq引用。但是,在没有重新确认查询的地方,是不是我遗漏了什么?很可能需要添加一个使用系统;以及System.Xml.Linq;elements.Dump()是一个LinqPad。我一直用它来做调查工作。确保您在项目中引用的是System.Core.dll添加的System.Linq和.where仍然不可重新识别
<Rectangle>
<elementcolor>blue</elementcolor>
<elementwidth>200</elementwidth>
</Rectangle>
<Line>
<elementcolor>red</elementcolor>
<elementwidth>150</elementwidth>
</Line>