【问题标题】:W3C xml get element with namespace and without namespaceW3C xml 获取具有命名空间和没有命名空间的元素
【发布时间】:2013-02-18 13:14:21
【问题描述】:

我有一个像下面这样的 XML,

<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
 <Entities xmlns="sample">
  <Entity>
    sample Value
   </Entity>
   <ns1:Entity xmlns:ns1="sample">
     sample Value
   </ns1:Entity>
 </Entities>

当我使用nodeElement.getNodeName(); 时,我只能得到&lt;Entity&gt; 而不是&lt;ns1:Entity&gt;
我验证了this post 并尝试了getLocalName() 而不是getNodeName()。它不工作。此外,当我尝试使用getElementByTagNameNS("Entity","sample") 时,getLength() 方法返回 0。

更新:

正如下面的答案中提到的,我交换了getElementByTagNameNS 的参数。 我看到一个使用 getElementByTagNameNS("*","Entity") 的选项,它允许我不在代码中对命名空间进行硬编码。现在想知道,使用*有什么缺点吗。

【问题讨论】:

    标签: xml xml-namespaces w3c


    【解决方案1】:

    getElementByTagNameNS("Entity","sample") 应该是getElementsByTagNameNS("sample","Entity"),即命名空间名称位于本地名称之前。

    您在尝试获取nodeElement.getNodeName() 时可能犯了类似的错误,但您尚未发布相关代码。

    【讨论】:

    • 嗨。我看到 getElementsByTagNameNS("*","Entity") 的另一个选项,这意味着具有任何命名空间的元素实体。我不想在代码中硬编码命名空间。我正在考虑使用 *.只是想知道,使用 * 是否还有其他缺点。
    • 我不知道。这似乎有点奇怪,因为具有合理本地名称但不同命名空间的元素实际上并没有以任何有意义的方式相关;这就像获取所有碰巧是同时发生的元素一样。所以我不会这样做。但在实际层面上,如果它能为您提供您想要的元素,那就足够了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-05
    • 2014-09-14
    • 1970-01-01
    • 2012-12-31
    相关资源
    最近更新 更多