【问题标题】:XML Parsing with NameSpace使用命名空间进行 XML 解析
【发布时间】:2013-01-16 15:24:36
【问题描述】:

我有下面的xml

<?xml version="1.0"?>
<response status="200">
  <ns3:output xmlns="http://xmlns.oracle.com/apps/fnd/wf/worklist/service/rt/artifacts/notificationdetails/" 
              xmlns:ns2="http://xmlns.oracle.com/apps/fnd/wf/worklist/service/rt/artifacts/worklistmgmt/" 
              xmlns:ns3="http://xmlns.oracle.com/apps/fnd/wf/worklist/service/rt/artifacts/worklist/">
    <ns2:notifications count="140552">
      <ns2:notification>
        <ns2:NotificationId>4687807</ns2:NotificationId>
      </ns2:notification>
    </ns2:notifications>
  </ns3:output>
</response>

我需要解析它并获取每一行的 NotificationId 值。 我尝试使用下面的代码来获取列表,但它返回 0。

notificationrows = xmlDoc.documentElement.selectNodes("/ns3:output/ns2:notifications");

谁能告诉我如何做到这一点?

【问题讨论】:

  • 你使用什么语言?

标签: xml parsing namespaces


【解决方案1】:

根据评论,您没有告诉我们您使用的是哪种语言/解析器,但您可以使用 local-name() 来实现与命名空间无关的 xpath,以避免使用 NamespaceManager 或类似名称,如下所示:

notificationrows = xmlDoc.documentElement.selectNodes("/response/*[local-name()='output']/*[local-name()='notifications']");

更新

请注意,您的根元素是 response(在全局命名空间中),因此您需要显式导航它,或者使用 // 来查找匹配的后代。

【讨论】:

  • 您能否提供有关如何执行此操作的确切代码或示例代码。
猜你喜欢
  • 2011-04-07
  • 2021-05-03
  • 2014-01-10
  • 2010-11-08
  • 2018-07-15
  • 2012-06-11
  • 2015-09-08
相关资源
最近更新 更多