我知道java可以解析xml文件并获取数据但我也想知道如何使用java创建xml节点/节点并插入值。
文件: myXML.xml
<parent>
<start>
<id> 123 </id>
<name> s1 </name>
<value> hello </value>
</start>
</parent>
我希望每次都需要插入数据时创建这些节点<id> <name> and <value>
。假如我要保存 id =“456”,name =“s2”,value =“world”
文件: myXML.xml
<parent>
<start>
<id> 123 </id>
<name> s1 </name>
<value> hello </value>
</start>
<start>
<id> 456 </id>
<name> s2 </name>
<value> world </value>
</start>
</parent>
请使用java
&amp;如果我需要使用dtd
?
答案 0 :(得分:2)
import java.io.*;
import javax.xml.parsers.*;
import org.w3c.dom.*;
import javax.xml.transform.*;
import javax.xml.transform.stream.*;
import javax.xml.transform.dom.DOMSource;
public class Sample {
public static void main (String[] args) {
try {
//Read and Parse
DocumentBuilderFactory dbfactory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = dbfactory.newDocumentBuilder();
Document doc = builder.parse(new File("MyXml.xml"));
Element root = doc.getDocumentElement();
//Add Element
Element element_start = doc.createElement("start");
Element element_id = doc.createElement("id");
Text textContents = doc.createTextNode(" 456 ");
element_id.appendChild(textContents);
element_start.appendChild(element_id);
Element element_name = doc.createElement("name");
textContents = doc.createTextNode(" s2 ");
element_name.appendChild(textContents);
element_start.appendChild(element_name);
Element element_value = doc.createElement("value");
textContents = doc.createTextNode(" world ");
element_value.appendChild(textContents);
element_start.appendChild(element_value);
root.appendChild(element_start);
//Write
DOMSource source = new DOMSource(doc);
StreamResult out = new StreamResult(new File("MyXmlOut.xml"));
TransformerFactory tff = TransformerFactory.newInstance();
Transformer tf = tff.newTransformer();
tf.transform(source, out);
} catch (Exception e) {
e.printStackTrace();
}
}
}
答案 1 :(得分:2)
您的选择(至少是其中一些选项):
是否需要使用DTD取决于最终使用XML文档的人/事。您不需要它只是为了进行Java处理。如果可能,请使用W3C XML Schema而不是DTD。
答案 2 :(得分:1)
您还可以使用XML DOM API创建或操作XML文档。看看this教程。