如何在java中以编程方式创建xml结构
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/20537374/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
how to create a xml structure programatically in java
提问by curious
i want to create a xml structure programatically in java
我想在java中以编程方式创建一个xml结构
the structure is like this
结构是这样的
<?xml version="1.0" encoding="UTF-8"?>
<System token="com.test.dummy">
<Parameter token="xyz">
<Value>4</Value>
</Parameter>
</System>
i have to create a temporary file and then insert this data in the file. I am new to this area, can someone help me.
我必须创建一个临时文件,然后将这些数据插入到文件中。我是这个领域的新手,有人可以帮助我。
采纳答案by Deepak
Use DOMParser
best way to write xml in java
使用DOMParser
最好的方式在java中编写xml
http://docs.oracle.com/cd/B13789_01/appdev.101/b12024/oracle/xml/parser/v2/DOMParser.html
http://docs.oracle.com/cd/B13789_01/appdev.101/b12024/oracle/xml/parser/v2/DOMParser.html
import java.io.File;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import org.w3c.dom.Attr;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
public class WriteXMLFile {
public static void main(String argv[]) {
try {
DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder docBuilder = docFactory.newDocumentBuilder();
// root elements
Document doc = docBuilder.newDocument();
Element rootElement = doc.createElement("company");
doc.appendChild(rootElement);
// staff elements
Element staff = doc.createElement("Staff");
rootElement.appendChild(staff);
// set attribute to staff element
Attr attr = doc.createAttribute("id");
attr.setValue("1");
staff.setAttributeNode(attr);
// shorten way
// staff.setAttribute("id", "1");
// firstname elements
Element firstname = doc.createElement("firstname");
firstname.appendChild(doc.createTextNode("yong"));
staff.appendChild(firstname);
// lastname elements
Element lastname = doc.createElement("lastname");
lastname.appendChild(doc.createTextNode("mook kim"));
staff.appendChild(lastname);
// nickname elements
Element nickname = doc.createElement("nickname");
nickname.appendChild(doc.createTextNode("mkyong"));
staff.appendChild(nickname);
// salary elements
Element salary = doc.createElement("salary");
salary.appendChild(doc.createTextNode("100000"));
staff.appendChild(salary);
// write the content into xml file
TransformerFactory transformerFactory = TransformerFactory.newInstance();
Transformer transformer = transformerFactory.newTransformer();
DOMSource source = new DOMSource(doc);
StreamResult result = new StreamResult(new File("C:\file.xml"));
// Output to console for testing
// StreamResult result = new StreamResult(System.out);
transformer.transform(source, result);
System.out.println("File saved!");
} catch (ParserConfigurationException pce) {
pce.printStackTrace();
} catch (TransformerException tfe) {
tfe.printStackTrace();
}
}
}
see this http://www.mkyong.com/java/how-to-create-xml-file-in-java-dom/
看到这个http://www.mkyong.com/java/how-to-create-xml-file-in-java-dom/
回答by vicky
You can also use StringBuilder
to form your xml struture. StringBuilder
is light weight but does not know XML so doesn't validate structure at all.But its worth going for it because of its simplicity.
您还可以使用StringBuilder
来形成您的 xml 结构。StringBuilder
重量轻,但不了解 XML,因此根本不验证结构。但由于它的简单性,因此值得一试。
StringBuilder xmlBuilder = new StringBuilder("<?xml version="1.0" encoding="UTF-8"?>");
xmlBuilder.append("<System token=\"com.test.dummy\">");
xmlBuilder.append("<Parameter token=\"xyz\">").append("<Value>4</Value>");
xmlBuilder.append("</Parameter>");
xmlBuilder.append("</System>");
xmlBuilder.toString();
You can also make your elements accept dynamic values. Make sure your xml document structure is correct
您还可以让您的元素接受动态值。确保您的 xml 文档结构正确