可能重复:
How to access a xml node with attributes and namespace using selectsinglenode()
我有一个XML:
<Root xmlns:XXXlocal="XXXX" schemaVersion="2.7" variant="multiterm">
<Customers>
<Customer type="Covered">
<DataItem name="OpCity" value="" />
<DataItem name="OpAddress1" value="" />
<DataItem name="OpAddress2" value="" />
<DataItem name="OpState" value="MI" />
<Customer>
</Customers>
</Root>
我需要从上面的XML中获取值“MI”。请注意,XML有许多不同的“客户类型”。
我该怎么做呢?我在编写xPath查询时遇到困难。
答案 0 :(得分:2)
在C#中,您可以使用LINQ / XDocument和XPathSelectElement()
来查询xpath:
var document = XDocument.Load(fileName);
var namespaceManager = new XmlNamespaceManager(new NameTable());
namespaceManager.AddNamespace("l", "XXXX");
var val = document.XPathSelectElement("/l:Root/l:Customers/l:Customer[@type='Covered']/l:DataItem[@name='OpState']/@value", namespaceManager).Value;
答案 1 :(得分:1)
假设命名空间XXXX
被定义为前缀x
,这应该有用......
/x:Root/x:Customers/x:Customer[@type='Covered']/x:DataItem[@name='OpState']/@value