Я новичок в обработке XML. Я пытаюсь весело: getElementById . для этого мне нужно объявить поле Id в моем документе. Итак, для этого я использую следующий код.
1) преобразование строки в xml.
javax.xml.parsers.DocumentBuilderFactory dbf =javax.xml.parsers.DocumentBuilderFactory.newInstance();
dbf.setNamespaceAware(true);
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
Document doc = dBuilder.parse(new InputSource(new StringReader(xml)));
2) использование setIdAttributeNode
String id = "122";
String xmlString = "<?xml version=\"1.0\" encoding=\"UTF-8\" ?><request><myxml></myxml></request>";
String cleanXml = xmlString.replaceAll("\\r", "").replaceAll("\\n", "");
Document doc = convertXmlStringToDoc(cleanXml, schemaPath);
NodeList nodeList = doc.getElementsByTagName("myxml");
if (nodeList.getLength() > 0) {
Attr att = doc.createAttribute("id");
att.setValue(id);
((Element) nodeList.item(0)).setIdAttributeNode(att, true);
}
Element e = doc.getElementById("122");
System.out.println(e);
Ошибка, которую я получаю:
Исключение в потоке org.w3c.dom.DOMException: NOT_FOUND_ERR: сделана попытка сослаться на узел в контексте, где он не существует.