如何使用C#获取XML中特定属性的值?

时间:2013-01-29 00:50:04

标签: c# xpath

  

可能重复:
  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查询时遇到困难。

2 个答案:

答案 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