У меня есть 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 внутри.