При попытке сгенерить документ на основе XML-строки в которой в значениях параметров есть спецсимволы типа # и т.д. а также ' и т.д возникает ошибка JDOMParseException.
Пример строки:
<groups><group gid="11291501078" name="Omar's Group #2"/></groups>
Есть ли у jdom средства заменить спецсимволы (типа #) и последовательности (типа ' ) в строке на стандартные для XML (или jdom) последовательности перед тем как вызывать для нее
Document doc = builder.build(new StringReader(requestString));
Ексцепшн именно в этой строке.
XML получаю извне именно в таком виде как в примере.
Здравствуйте, Sash_net, Вы писали:
S_>При попытке сгенерить документ на основе XML-строки в которой в значениях параметров есть спецсимволы типа # и т.д. а также ' и т.д возникает ошибка JDOMParseException.
S_><groups><group gid="11291501078" name="Omar's Group #2"/></groups>
# — ни разу не спецсимвол
спец. символа два: < и &
в данном случае ' — entity, которая должна быть определена. скорее всего, ругается на то, что нет её определения, но я не телепат
Здравствуйте, Sash_net, Вы писали:
C0s>># — ни разу не спецсимвол
S_>При наличии только его такой же ексцепшн (или может дело в последовательности #2).
очень странно
C0s>>спец. символа два: < и &
C0s>>в данном случае ' — entity, которая должна быть определена. скорее всего, ругается на то, что нет её определения, но я не телепат
S_>Как ее определить?
это не твоя забота, а в xmlе, который тебе приходит, должно быть что-то типа
<!DOCTYPE example [
<!ENTITY apos "&_#_27;"> <!-- здесь на самом деле нет символов подчёркивания, я их вставил, чтобы сообщение на форуме отобразилось -->
]>
где 27 — код апострофа (это я так протелепатил)
S_>Чуствую напишу заменялку для всех левых значений, типа "'" менять на "&#<код апострофа>" и буду через нее проганять входную строку.
не думаю, что это верно
верно, кмк — разобраться, почему тебе приходит
неверный xml (либо обнаружить, что что-то не так с jdom)
Включил логи на сервере
Ошибка заключается в том что строка формируется как
requestString = req.getParameter("xml");
и req чесно возвращает все до следующего амперсенда.
Сорри за
censored
.