Xpath возвращает пустой элемент объекта - PullRequest
0 голосов
/ 01 мая 2011

У меня есть XML-документ в виде строки без какого-либо пространства имен, и я хочу проанализировать его с помощью Java, JDOM и XPath и создать дерево объектов. Поскольку XPAth всегда требует префикса и пространства имен для запроса, я добавил пространство имен и префикс к корню, а затем к узлу, который я хочу получить, но я вижу, что Xpath требует пространства имен в каждом узле документа, но только в корне .

Итак, в начале есть способ добавить пространство имен ко всем элементам в объекте документа, чтобы мой запрос xpath работал правильно?

В коде должны быть и другие ошибки и плохие совпадения. Буду рад любым идеям.

String response="myXmlString"
ByteArrayInputStream stream = new ByteArrayInputStream(
            response.getBytes());
SAXBuilder builder = new SAXBuilder();
Document doc = builder.build(stream);
org.jdom.Element request=(org.jdom.Element) doc.getRootElement();   
request.setNamespace(Namespace.getNamespace("myNamespace"));

createRequest(request);

А потом

public Request createRequest(Element requestXML) {              
Request request = new Request();
requestXML.detach();
Document doc = new Document(requestXML);
XPath xpath = XPath.newInstance(myExpression);
xpath.addNamespace("m", doc.getRootElement().getNamespaceURI());

xpath.selectSingleNode(doc);

}

эта последняя строка возвращает пустое значение, она не равна нулю, но выдает исключение jdom внутри.

1 Ответ

1 голос
/ 01 мая 2011

XPath и XML НЕ требуют пространства имен.Вернитесь к исходному XML и удалите все хакеры пространства имен / префиксов в своем коде.

...