Проверка 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, время: 02:00. |