#java #xml #dom #build
#java #xml #dom #сборка
Вопрос:
Я хотел бы создать xml со специальными тегами. Я пытался сделать это с помощью Dom, но это не сработало.
Я хотел бы создать этот XML:
<om2m:ae xmlns:om2m="http://www.onem2m.org/xml/protocols">
<api>app-sensor</api>
<lbl>Type/sensor Category/temperature Location/home</lbl>
<rr>false</rr>
</om2m:ae>
Как мне это сделать, что я должен использовать?
Я попробовал этот код:
public String XMLBuilder(String process, HashMap<String, String> mapHash) {
String returnVal = "";
try {
DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder docBuilder = docFactory.newDocumentBuilder();
Document doc = docBuilder.newDocument();
Element rootElement;
if (process.equals("ae")) {
// root elements
rootElement = doc.createElementNS("http://www.onem2m.org/xml/protocols","m2m:ae");
doc.appendChild(rootElement);
}
Iterator it = mapHash.entrySet().iterator();
// Fill to xml
while (it.hasNext()) {
Map.Entry hashList = (Map.Entry) it.next();
Element val = doc.createElement(String.valueOf(hashList.getKey()));
val.appendChild(doc.createTextNode(String.valueOf(hashList.getValue())));
doc.appendChild(val);
}
// write the content into xml file
DOMSource source = new DOMSource(doc);
StringWriter writer = new StringWriter();
StreamResult result = new StreamResult(writer);
TransformerFactory tf = TransformerFactory.newInstance();
Transformer transformer = tf.newTransformer();
transformer.transform(source, result);
returnVal = writer.toString();
System.out.println(returnVal);
} catch (ParserConfigurationException e) {
e.printStackTrace();
} catch (TransformerConfigurationException e) {
e.printStackTrace();
} catch (TransformerException e) {
e.printStackTrace();
}
return returnVal;
}
и я получаю сообщение об ошибке:
org.w3c.dom.DOMException: HIERARCHY_REQUEST_ERR: An attempt was made to insert a node where it is not permitted.
Ответ №1:
Измените doc.appendChild(val);
doc.getDocumentElement().appendChild(val);
, чтобы вставить вновь созданные элементы в качестве дочерних элементов корневого элемента.