<X version="1.0">
<Y id="abc" abv="a"/>
<Y id="edf" abv="e"/>
</X>
Run Code Online (Sandbox Code Playgroud)
我想选择id为"abc"的节点,并返回其abv"a".
XmlDocument doc = new XmlDocument();
doc.Load(filePath);
XmlNodeList list = doc.SelectNodes("X/Y");
var node = list.Cast<XmlNode>().Where(node => node["id"].InnerText == "abc")
.Select(x=>x["abv"].InnerText);
Run Code Online (Sandbox Code Playgroud)
但它不起作用,node ["id"].InnerText总是"".你能指出问题出在哪里吗?
非常感谢
And*_*yev 24
除了因为非唯一node变量而不能编译你的代码片段的事实(首先在linq查询aтd第二个"where"方法lambda中),你也错过Attributes了你的查询.
应该是这样的
var node = list.Cast<XmlNode>()
.Where(n => n.Attributes["id"].InnerText == "abc")
.Select(x => x.Attributes["abv"].InnerText);
Run Code Online (Sandbox Code Playgroud)
在InnerText一个节点是之间的文本<node>和</node>.因此,例如<Y attributes />,没有内部文本.
你需要使用 node => node.Attributes["id"].Value == "abc"
| 归档时间: |
|
| 查看次数: |
17548 次 |
| 最近记录: |