[英]how to select XML node with Attribute names
我得到这样的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;
是你想要的。
如果是我,我将首先获取该节点,如果不为null,则获取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);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.