2013-03-04 2 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>.
0 проверяется: this post и проверено: getLocalName() вместо getNodeName(). Это не работает. Кроме того, когда я попытался с помощью getElementByTagNameNS("Entity","sample"), метод getLength() возвратил 0.

Изменено:

Как уже упоминалось в приведенном ниже ответе я поменять местами, параметры getElementByTagNameNS. Я вижу вариант использования getElementByTagNameNS("*","Entity"), который позволяет мне не жестко кодировать пространство имен в коде. Теперь хотелось знать, есть ли недостаток в использовании *.

+0

Просьба указать код. –

ответ

1

getElementByTagNameNS("Entity","sample") должно быть getElementsByTagNameNS("sample","Entity"), то есть имя пространства имен находится перед локальным именем.

Возможно, вы сделали аналогичную ошибку, пытаясь получить nodeElement.getNodeName(), но вы не разместили соответствующий код.

+0

Привет. Я вижу еще один вариант с getElementsByTagNameNS ("*", "Entity"), что означает Element Entity с любым пространством имен. Я не хочу жестко кодировать пространство имен в коде. Я думаю использовать *. Просто хочу знать, есть ли другой недостаток использования *. –

+1

Не знаю, о чем я знаю. Это кажется немного странным, потому что элементы с разумным локальным именем, но с разными пространствами имен не связаны каким-либо значимым образом; Это похоже на то, чтобы получить все элементы, которые являются частью совместного случая. Поэтому я бы этого не сделал. Но на практическом уровне, если он доставит вам нужные вам элементы, достаточно справедливым. – Alohci

Смежные вопросы