我正在尝试创建一个xml文件,并且只创建根节点,在我添加一些元素之后,这就是我想要的:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<Users>
</Users>
但这就是我所拥有的:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<Users/>
这是我的代码:
DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder();
Document doc = documentBuilder.newDocument();
Element root_users = doc.createElement("Users");
doc.appendChild(root_users);
DOMSource source = new DOMSource(doc);
TransformerFactory transformerFactory = TransformerFactory.newInstance();
Transformer transformer = transformerFactory.newTransformer();
transformer.setOutputProperty(OutputKeys.INDENT, "yes");
StreamResult result = new StreamResult(path+"users.xml");
transformer.transform(source, result);
我无法理解为什么不起作用,我想只创建根元素,因为我想用这个检索那个根节点:
Document document = documentBuilder.parse(pathToWrite+"users.xml");
Element root = document.getDocumentElement();
并将孩子附加到其中,最后得到这个结构:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<Users>
<User>
<Name>Carl</Name>
</User>
<User>
<Name>Bob</Name>
</User>
</Users>
我怎么做?
答案 0 :(得分:2)
<Users/>
是空元素的简写,即它与
完全相同<Users></Users>
如果您将子元素添加到此元素,您将获得所需的输出。
请注意,<Users/>
不与
<Users>
</Users>
因为后一个元素不为空 - 它包含换行符。要创建它,您需要将文本节点子项添加到root_users
元素
Document doc = documentBuilder.newDocument();
Element root_users = doc.createElement("Users");
doc.appendChild(root_users);
root_users.appendChild(doc.createTextNode("\n"));
答案 1 :(得分:1)
你想要什么,你得到的是功能相同的。
最后的/>
只是表示结束标记的简写。
无论如何都要尝试附加内容,看看会发生什么。