Проверка XML на валидность
(new DOMParser()).parseFromString(xml, "text/xml")При невалидном содержимом xml вместо того чтобы бросать исключение или возвращать специальное значение (null или undefined, например) возвращает дерево содержащее описание ошибки. Как эту ситуацию можно исправить? |
var xmlDocument = (new DOMParser()).parseFromString("<invalid>", "text/xml"); if (xmlDocument.childNodes[0].namespaceURI == "http://www.mozilla.org/newlayout/xml/parsererror.xml") alert("Ошибка разбора XML") |
Цитата:
Есть более универсальный способ? |
Google: XML валидатор
результатов много |
Цитата:
|
Цитата:
|
SV0L0CH,
Вас смутила мозилла в строке неймспейса? Это всего лишь токен, описывающий схему xml, к движку браузера он никакого отношения не имеет (под той же оперой работает). Точно так же, браузеры, кроме амайи, никакого отношения к w3.org не имеют, хотя этот адрес и встречается в доктайпе. На крайний случай, если эта строка вдруг будет другой, проверить, какой именно, ничего не стоит. |
Цитата:
alert((new XMLSerializer).serializeToString((new DOMParser()).parseFromString("<invalid>", "text/xml"))); Вообще, раз браузер выдаёт ошибку то целесообразно было бы проверять её наличие через браузерное API. Должен же быть какой-нибудь способ :-? |
var xml = (new DOMParser()).parseFromString("<invalid>", "text/xml"); if(xml && xml.documentElement && xml.documentElement.tagName != 'parsererror'){ alert('Ok.'); } else { alert('Fuck.'); } |
Часовой пояс GMT +3, время: 00:52. |