使用DOM创建XML时会创建空XML

时间:2017-05-30 12:43:23

标签: java xml dom xml-parsing

我正在尝试使用DOM Parser创建一个xml。下面是我创建XML的代码。但我得到的xml只有xml版本,如下所示:

  <?xml version="1.0" encoding="UTF-8" standalone="no"?>

用于生成xml的代码如下:

private void createTestngXML() throws Exception {
    try {
        DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();
        DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder();
        Document document = documentBuilder.newDocument();
        document.setXmlVersion("1.0");

        Element root = document.createElement("suite");
        root.setAttribute("name", "MasterDataSuite");
        root.setAttribute("verbose", "1");

        Element testnode = document.createElement("test");
        testnode.setAttribute("name", "MasterDataTests");
        root.appendChild(testnode);

        Element classesNode = document.createElement("classes");
        testnode.appendChild(classesNode);

        Element classNode = document.createElement("class");
        classNode.setAttribute("com.test.suite.TestSuite1.java");
        classesNode.appendChild(classNode);

        Element classNode = document.createElement("class");
        classNode.setAttribute("com.test.suite.TestSuite2.java");
        classesNode.appendChild(classNode);

        document.appendChild(root);

        DOMSource source = new DOMSource(document);
        TransformerFactory transformerFactory = 
        TransformerFactory.newInstance();
        Transformer transformer = transformerFactory.newTransformer();
        StreamResult result = new StreamResult(new File("D:\\testng.xml"));
        transformer.transform(source, result);
    } catch (Exception ex) {
        throw ex;
    }
}

但是创建的节点不是在xml文件中生成的。我做错了什么?

1 个答案:

答案 0 :(得分:0)

您的示例提供了编译错误。

尝试以下工作样本,

public static void main(String[] args) {

          try {
             DocumentBuilderFactory dbFactory =
             DocumentBuilderFactory.newInstance();
             DocumentBuilder dBuilder = 
                dbFactory.newDocumentBuilder();
             Document doc = dBuilder.newDocument();
             // root element
             Element rootElement = doc.createElement("cars");
             doc.appendChild(rootElement);

             //  supercars element
             Element supercar = doc.createElement("supercars");
             rootElement.appendChild(supercar);

             // setting attribute to element
             Attr attr = doc.createAttribute("company");
             attr.setValue("Ferrari");
             supercar.setAttributeNode(attr);

             // carname element
             Element carname = doc.createElement("carname");
             Attr attrType = doc.createAttribute("type");
             attrType.setValue("formula one");
             carname.setAttributeNode(attrType);
             carname.appendChild(
             doc.createTextNode("Ferrari 101"));
             supercar.appendChild(carname);

             Element carname1 = doc.createElement("carname");
             Attr attrType1 = doc.createAttribute("type");
             attrType1.setValue("sports");
             carname1.setAttributeNode(attrType1);
             carname1.appendChild(
             doc.createTextNode("Ferrari 202"));
             supercar.appendChild(carname1);

             // 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("D:\\cars.xml"));
             transformer.transform(source, result);
             // Output to console for testing
             StreamResult consoleResult =
             new StreamResult(System.out);
             transformer.transform(source, consoleResult);
          } catch (Exception e) {
             e.printStackTrace();
          }
       }