Этот вопрос уже затрагивался ранее, но с момента последнего вопроса об обработке пространства имен прошло некоторое время.
Существует ли кросс-браузерное решение для получения элементов по имени в Javascript?
<?xml version="1.0" encoding="UTF-8"?>
<NS:response success="1" xmlns:NS="http://someURI/ns">
<NS:user firstname="foo" lastname="bar"></NS:user>
<NS:cookie value="2c0ea35bcac2e05d439609367a236b28" name="session"></NS:cookie>
</NS:response>
Пока что у меня есть:
var oXML = (new DOMParser()).parseFromString(xmlstring, "text/xml");
var root = oXML.documentElement;
var user = typeof(user=root.getElementsByTagName(root.prefix + ':user')[0]) === "undefined"
?root.getElementsByTagName('user')[0]
:user;
Не был протестирован в IE, но если у кого-нибудь есть кросс-браузерное решение, я бы хотел услышать.
Другие соображения:
- getElementsByTagNameNS () - я пытаюсь избежать указания пространства имен / uri
- использование регулярного выражения для удаления пространства имен перед созданием документа XML
- без использования пространства имен - у меня есть такая опция, но я не хотел бы идти по этому пути