如何从java创建xml文件
我正在构建一个简单的java程序来创建XML文件。 我正在构建此代码:如何从java创建xml文件,java,xml,xml-parsing,Java,Xml,Xml Parsing,我正在构建一个简单的java程序来创建XML文件。 我正在构建此代码: public static void creaXMLOrdine(OrdiniNuovo ordine,String codiceNegozio, String pathFile){ try{ DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
public static void creaXMLOrdine(OrdiniNuovo ordine,String codiceNegozio,
String pathFile){
try{
DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder docBuilder = docFactory.newDocumentBuilder();
Document doc = docBuilder.newDocument();
Element rootElement = doc.createElement("ORDER");
doc.appendChild(rootElement);
Element info = doc.createElement("INFO");
rootElement.appendChild(info);
Attr attr = doc.createAttribute("id");
attr.setValue(ordine.getCodiceOrdine()+"");
info.setAttributeNode(attr);
TransformerFactory transformerFactory = TransformerFactory.newInstance();
Transformer transformer = transformerFactory.newTransformer();
DOMSource source = new DOMSource(doc);
String nomeFile = pathFile+codiceNegozio+"_"+ordine.getCodiceOrdine()+".xml";
StreamResult result = new StreamResult(new File(nomeFile));
// Output to console for testing
// StreamResult result = new StreamResult(System.out);
transformer.transform(source, result);
System.out.println("File saved!");
}catch(Exception e){
log.logStackTrace(e);
VisualMessage.getErrore();
}
}
但如果我尝试启动此代码,则会出现以下错误:
线程AWT-EventQueue-0 java.lang.AbstractMethodError中出现异常:gnu.xml.dom.DomDocument.getXmlStandaloneZ
位于com.sun.org.apache.xalan.internal.xsltc.trax.DOM2TO.setDocumentInfoDOM2TO.java:377
位于com.sun.org.apache.xalan.internal.xsltc.trax.DOM2TO.parseDOM2TO.java:131
位于com.sun.org.apache.xalan.internal.xsltc.trax.DOM2TO.parseDOM2TO.java:98
位于com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transformIdentityTransformerImpl.java:702
www.com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.TransformerImpl.java:746
位于com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.TransformerImpl.java:359
位于supporto.Utility.creaXMLOrdineUtility.java:142
在PanelFornitoriClienti.PanelNuovoOrdine.inviaOrdineXFilePanelNuovoOrdine.java:461
在PanelFornitoriClienti.PanelNuovoOrdine$10.actionPerformedPanelNuovoOrdine.java:776
在javax.swing.AbstractButton.fireActionPerformedAbstractButton.java:2018
位于javax.swing.AbstractButton$Handler.actionPerformedAbstractButton.java:2341
位于javax.swing.DefaultButtonModel.fireActionPerformedDefaultButtonModel.java:402
在javax.swing.DefaultButtonModel.setPressedDefaultButtonModel.java:259
java:252
在java.awt.AWTEventMulticaster.mouseReleasedAWTEventMulticaster.java:289
在java.awt.AWTEventMulticaster.mouseReleasedAWTEventMulticaster.java:289
位于java.awt.Component.processMouseEventComponent.java:6516
javax.swing.JComponent.processMouseEventJComponent.java:3320
位于java.awt.Component.processEventComponent.java:6281
在java.awt.Container.processEventContainer.java:2229
位于java.awt.Component.dispatchEventImplComponent.java:4872
位于java.awt.Container.dispatchEventImplContainer.java:2287
位于java.awt.Component.dispatchEventComponent.java:4698
位于java.awt.LightweightDispatcher.retargetMouseEventContainer.java:4832
位于java.awt.LightweightDispatcher.processMouseEventContainer.java:4492
位于java.awt.LightweightDispatcher.dispatchEventContainer.java:4422
位于java.awt.Container.dispatchEventImplContainer.java:2273
在java.awt.Window.dispatchEventImplWindow.java:2719
位于java.awt.Component.dispatchEventComponent.java:4698
在java.awt.EventQueue.dispatchEventImplEventQueue.java:735
在java.awt.EventQueue.access$200EventQueue.java:103
在java.awt.EventQueue$3.runEventQueue.java:694
位于java.awt.EventQueue$3.runEventQueue.java:692
位于java.security.AccessController.doPrivilegeEdNative方法
java.security.ProtectionDomain$1.doIntersectionPrivilegeProtectionDomain.java:76
java.security.ProtectionDomain$1.doIntersectionPrivilegeProtectionDomain.java:87
在java.awt.EventQueue$4.runEventQueue.java:708
在java.awt.EventQueue$4.runEventQueue.java:706
位于java.security.AccessController.doPrivilegeEdNative方法
java.security.ProtectionDomain$1.doIntersectionPrivilegeProtectionDomain.java:76
位于java.awt.EventQueue.dispatchEventQueue.java:705
位于java.awt.EventDispatchThread.pumpOneEventForFiltersEventDispatchThread.java:242
在java.awt.EventDispatchThread.pumpEventsForFilterEventDispatchThread.java:161
在java.awt.EventDispatchThread.PumpeEventsForHierarchyEventDispatchThread.java:150
在java.awt.EventDispatchThread.pumpEventsEventDispatchThread.java:146
在java.awt.EventDispatchThread.pumpEventsEventDispatchThread.java:138
在java.awt.EventDispatchThread.runEventDispatchThread.java:91
请参阅此帮助:
public class UtilsXML {
private static Document doc;
// Root "ORDER"
public static Element addRoot(String rootName) {
Element root = doc.createElement(rootName);
doc.appendChild(root);
return root;
}
// Elements inside ROOT like INFO, OTHERS
public static Element addElement(String rootName, Element root) {
Element e = doc.createElement(rootName);
root.appendChild(e);
return e;
}
// Elements inside other elements INFO -> Id, Value
public static void addNode(Element e, String tagName, String content) {
Element employ = doc.createElement(tagName);
employ.appendChild(doc.createTextNode(content));
e.appendChild(employ);
}
// Document
public static void makeDoc() throws ParserConfigurationException {
DocumentBuilderFactory dF = DocumentBuilderFactory.newInstance();
DocumentBuilder docB = dF.newDocumentBuilder();
doc = docB.newDocument();
}
// Save the xml file
public static void makeFile(String filePath) throws TransformerException {
TransformerFactory tF = TransformerFactory.newInstance();
Transformer t = tF.newTransformer();
DOMSource source = new DOMSource(doc);
File xml = new File(filePath);
StreamResult r = new StreamResult(xml);
t.transform(source, r);
}
}
例如:
try {
UtilsXML.makeDoc();
Element order = UtilsXML.addRoot("ORDER");
Element info = UtilsXML.addElement("INFO", order);
UtilsXML.addNode(info, "Id", "123456");
UtilsXML.addNode(info, "Value", "99999");
Element other = UtilsXML.addElement("OTHERS", order);
UtilsXML.addNode(other, "Date", "01/01/2017");
UtilsXML.addNode(other, "Status", "Finish");
UtilsXML.makeFile("c:/opensource/myXml.xml");
} catch (ParserConfigurationException e) {
e.printStackTrace();
}
<ORDER>
<INFO>
<Id>123456</Id>
<Value>99999</Value>
</INFO>
<OTHERS>
<Date>01/01/2017</Date>
<Status>Finish</Status>
</OTHERS>
</ORDER>
哪一行可能是Utility.creaXMLOrdineUtility.java:142?英文变量名会使代码更容易理解。