setIdAttributeNode в ошибке Java java: NOT_FOUND_ERR: сделана попытка сослаться на узел в контексте, где он не существует - PullRequest
0 голосов
/ 29 октября 2018

Я новичок в обработке 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: сделана попытка сослаться на узел в контексте, где он не существует.

...