2013-03-04 119 views
0

我有象下面这样的XML,W3C 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();,我只能抽到<Entity><ns1:Entity>
我验证了this post并尝试了getLocalName()而不是getNodeName()。它不工作。此外,当我尝试使用getElementByTagNameNS("Entity","sample"),所述getLength()方法返回的0

更新:

如以下回答我互换getElementByTagNameNS上述参数。 我看到一个使用getElementByTagNameNS("*","Entity")的选项,它允许我不对代码中的命名空间进行硬编码。现在想知道,使用*有没有什么缺点。

+0

请显示验证码。 – 2013-03-04 12:39:19

回答

1

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

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

+0

嗨。我看到getElementsByTagNameNS(“*”,“Entity”)的另一个选项,这意味着元素实体具有任何名称空间。我不想在代码中对命名空间进行硬编码。我正在考虑使用*。只是想知道,使用*有什么其他的缺点。 – 2013-03-05 06:23:10

+1

不是我所知道的。这似乎有点奇怪,因为具有合理的本地名称但名称空间不同的元素并没有任何有意义的关联;这就像让所有元素碰巧成为共同发生的一部分。所以我不会这样做。但从实用的角度来看,如果它能让你获得你想要的元素,那就足够公平了。 – Alohci 2013-03-05 07:30:00