【问题标题】:How to retrieve an element value from the xml using xpath?如何使用 xpath 从 xml 中检索元素值?
【发布时间】:2013-03-26 14:29:51
【问题描述】:

如何从下面的 xml 中检索站点名称元素值?

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
  <s:Header>
    <To s:mustUnderstand="1" xmlns="http://schemas.microsoft.com/ws/2005/05/addressing/none">http://localhost:63630/Service.svc</To>
    <Action s:mustUnderstand="1" xmlns="http://schemas.microsoft.com/ws/2005/05/addressing/none">http://tempuri.org/IService/GetDemographic</Action>
  </s:Header>
  <s:Body>
    <GetDemographic xmlns="http://tempuri.org/">
      <userIdentifier>first value</userIdentifier>
      <sitename>second value</sitename>
      <demographicName>third value</demographicName>
    </GetDemographic>
  </s:Body>
</s:Envelope>

我尝试的以下代码返回null:

var xmlDocument = new XmlDocument();
xmlDocument.LoadXml(myXml);
var result = xmlDocument.SelectNodes("//sitename");

问题是 Xml 命名空间吗?我可以搜索而不考虑命名空间值,因为 sitename 元素没有分配命名空间吗?

我发现下面的代码运行良好:

xmlDocument.SelectNodes("//*[local-name()='sitename']");

如何让它不区分大小写?

【问题讨论】:

  • "//s:Envelope/s:Body/GetDemographic/sitename" ??
  • 我希望它是通用的

标签: c# asp.net xml xpath


【解决方案1】:

尝试查看这些链接;)

.NET 中不区分大小写的 XPath:http://blogs.msdn.com/shjin/archive/2005/07/22/442025.aspx

使用 XPath 通过 MSXML 执行不区分大小写的搜索:http://support.microsoft.com/kb/315719

例如:

XMLDoc.SelectNodes("Cars/car[contains(.,'Protan')]")

上述选择的结果应该与本次选择的结果相同

XMLDoc.SelectNodes("Cars/car[contains(.,'protan')]")'

【讨论】:

    【解决方案2】:

    我遇到了类似的问题。我能够通过使用命名空间管理器添加命名空间来解决它。

    这是一个类似的问答:(Using Xpath With Default Namespace in C#)

    希望对您有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-22
      • 1970-01-01
      • 1970-01-01
      • 2018-05-25
      相关资源
      最近更新 更多