如何选择具有属性名称的 XML 节点
本文关键字:属性 节点 XML 何选择 选择 | 更新日期: 2023-09-27 18:37:08
>我得到这样的XML数据:
<Persons>
<Person Role="Writer">Jame</Person>
<Person Role="Writer">Matt</Person>
<Person Role="Producer">Ben</Person>
</Persons>
然后我试试:
Persons.SelectSingleNode("ns:Person Role='"Writer'"", mng).InnerText;
这不能选择节点。它说:
'ns:Person Role='Writer'' has an invalid token.
NS 是命名空间与其他节点配合使用正常
使用 LINQ to XML
XDocument doc = XDocument.Parse(xmlString);
var nodes = doc.Root.Elements(e => e.Attribute.Value == "Writer");
List<string> values = nodes.Select(n => n.Value).ToList();
Persons.SelectSingleNode("ns:Person[@Role='Writer']", mng).InnerText;
是你想要的。
如果是我,我会首先获取节点,如果它不是空,则获取 InnerText,以防万一它不存在。
您希望
使用[@Role='']
来匹配属性。下面是来自 LINQPad 的完整示例:
var xml = "<Persons><Person Role='"Writer'">Jame</Person><Person Role='"Writer'">Matt</Person><Person Role='"Producer'">Ben</Person></Persons>";
var xmlDoc = new XmlDocument();
xmlDoc.LoadXml(xml);
Console.WriteLine(
xmlDoc.DocumentElement
.SelectSingleNode(@"//Persons/Person[@Role='Writer']").OuterXml);