以下代码会导致输出类似于以下内容:
<parent>
<child/>
<secondChild/> ...
我希望它看起来如下:
<parent>
parent text
<child></child>
<secondChild>second child text</secondChild>
有问题的代码如下:
Element parentNode= document.createElement("parent");
Text textNode = document.createTextNode("parent text");
Element childNode = document.createElement("child");
parentNode.appendChild(childNode);
childNode.appendChild(textNode);
childNode = document.createElement("secondChild");
textNode = document.createTextNode("second child text");
parentNode.appendChild(childNode);
childNode.appendChild(textNode);
我的问题是,在构建文档时,重新引用导致问题的textNode
会遗漏一些内容吗?
答案 0 :(得分:1)
DOM相当古老,并不是使用xml最简单的方法,不是在java或任何其他平台上(因为它是几乎所有平台上都相同的标准接口)。
你试过jdom还是dom4j?
答案 1 :(得分:1)
它对我有效。也许你的打印方式有问题吗?试试这个:
import org.w3c.dom.*;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.*;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import java.io.StringWriter;
public class ThrowawayCode {
public static void main(String[] args) throws Exception {
Document document = DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument();
Element parentNode = document.createElement("parent");
document.appendChild(parentNode);
Text textNode = document.createTextNode("parent text");
Element childNode = document.createElement("child");
parentNode.appendChild(childNode);
childNode.appendChild(textNode);
childNode = document.createElement("secondChild");
textNode = document.createTextNode("second child text");
parentNode.appendChild(childNode);
childNode.appendChild(textNode);
Source source = new DOMSource(document);
StringWriter writer = new StringWriter();
Result result = new StreamResult(writer);
TransformerFactory.newInstance().newTransformer().transform(source, result);
System.out.println(writer.toString());
}
}
输出:
<?xml version="1.0" encoding="UTF-8" standalone="no"?><parent><child>parent text</child><secondChild>second child text</secondChild></parent>
编辑:如果您的意思是想要将第一个文本放在孩子之外而不是在其中,则需要将代码更改为:
Text textNode = document.createTextNode("parent text");
Element childNode = document.createElement("child");
parentNode.appendChild(textNode);
parentNode.appendChild(childNode);
但我认为你错误输入了XML。