【问题标题】:How do you create XML nodes using Java DOM?如何使用 Java DOM 创建 XML 节点?
【发布时间】:2013-11-25 05:32:21
【问题描述】:

如何使用Java DOM 创建下面的XML,我想从头开始创建它。有什么办法吗? 我不想阅读和克隆它,我只想通过DOM方法创建它。

Java 示例:

Node booking=new Node();
Node bookingID=new Node();
booking.add(bookingID);

XML 示例:

<tns:booking>
    <tns:bookingID>115</tns:bookingID>
    <tns:type>double</tns:type>
    <tns:amount>1</tns:amount>
    <tns:stayPeriod>
        <tns:checkin>
            <tns:year>2013</tns:year>
            <tns:month>11</tns:month>
            <tns:date>14</tns:date>
        </tns:checkin>
        <tns:checkout>
            <tns:year>2013</tns:year>
            <tns:month>11</tns:month>
            <tns:date>16</tns:date>
        </tns:checkout>
    </tns:stayPeriod>
</tns:booking>

【问题讨论】:

标签: java xml dom nodes


【解决方案1】:

除了已经提到的教程之外,这里有一个使用javax.xml.transformorg.w3c.dom 包的简单示例:

import java.io.*;
import javax.xml.transform.*;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import org.w3c.dom.*;
import com.sun.org.apache.xerces.internal.dom.DocumentImpl;

public class XML {
    public static void main(String[] args) {
        XML xml = new XML();
        xml.makeFile();
    }

    public void makeFile() {
        Node item = null;
        Document xmlDoc = new DocumentImpl();
        Element root = xmlDoc.createElement("booking");
        item = xmlDoc.createElement("bookingID");
        item.appendChild(xmlDoc.createTextNode("115"));
        root.appendChild(item);
        xmlDoc.appendChild(root);

        try {
            Source source = new DOMSource(xmlDoc);
            File xmlFile = new File("yourFile.xml");
            StreamResult result = new StreamResult(new OutputStreamWriter(
                                  new FileOutputStream(xmlFile), "ISO-8859-1"));
            Transformer xformer = TransformerFactory.newInstance().newTransformer();
            xformer.transform(source, result);
        } catch(Exception e) {
            e.printStackTrace();
        }
    }
}

【讨论】:

  • 感谢您的大力帮助,是否还有转换 String tags="201311 14";直接导入xml文件?
  • 我不知道。一种方法是拆分它们并遍历键/值,分别调用 createElementappendChild 获取键和值。
  • 使用内部实现类不是个好主意;使用不同的 JDK 时它可能不可用。最好坚持使用公共 API。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多