通过JDOM向XML添加内容

时间:2014-03-24 10:26:23

标签: xml jdom

我开始关注JDOM。到目前为止,我已经创建了一个名为file.xml的文件。现在我想在XML文件中添加一些内容,但我有点不安全如何做到这一点? 那可能是:     - 名称     - 姓      - 年龄

希望有人可以帮助我吗?最好的问候朱莉

    ppackage examplePackage;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import org.jdom2.Document;
import org.jdom2.Element;
import org.jdom2.JDOMException;
import org.jdom2.input.SAXBuilder;
import org.jdom2.output.Format;
import org.jdom2.output.XMLOutputter;

public class ReadXMLFile {

    public static void main(String[] args) {
        try {
            write();
            read();
        }
        catch (FileNotFoundException e){
            e.printStackTrace();
        }
        catch(IOException e) {
            e.printStackTrace();
        }
        catch(JDOMException e) {
            e.printStackTrace();
        }
    }

        public static void read() throws JDOMException, IOException {


            SAXBuilder reader = new SAXBuilder();
            Document document = reader.build(new File("file.xml"));
            XMLOutputter xout = new XMLOutputter(Format.getPrettyFormat());
            xout.output(document, System.out);
        }

        public static void write() throws FileNotFoundException, IOException {



Document document = new Document();
        Element root = new Element("document");
        root.setAttribute("file", "file.xml");
        root.addContent(new Element("style"));
        document.setRootElement(root);

        Element person = new Element("Person");             
        person.setAttribute("name", "Mads");
        }
}

在控制台中打印:

<?xml version="1.0" encoding="UTF-8"?>
<document file="file.xml">
  <style />
</document>

在这种情况下,它应该打印出名为“Mads”的人吗?

1 个答案:

答案 0 :(得分:0)

read方法中,您可能想要更改此行:

  

的System.out.println(document.getContent());

类似于:

 XMLOutputter xout = new XMLOutputter(Format.getPrettyFormat());
 xout.output(document, System.out);

这将打印整个文档,而不仅仅是toString()部分文档。

然后,关于在write()方法中添加内容....

  • 您可以使用以下项设置根元素:

        Document document = new Document();
        Element root = new Element("document");
        root.setAttribute("file", "file.xml");
        root.addContent(new Element("style"));
        document.setRootElement(root);
    

    。这没有什么不对,但通常更常见的是:

        Element root = new Element("document");
        root.setAttribute("file", "file.xml");
        root.addContent(new Element("style"));
        Document document = new Document(root); // note the root constructor
    
  • 如果您想添加其他内容,例如:

    for (int i = 0; i < 10; i++) {
        Element count = new Element("count" + i);
        root.addContent(count);
    }
    

    Element person = new Element("person");        
    person.setAttribute("name", "Jon");
    person.setAttribute("lastname", "Skeet");
    person.setAttribute("age", "37");
    root.addContent(person);
    

更新:最后,在添加内容后,您确实需要将文件写入磁盘:

XMLOutputter xmlout = new XMLOutputter(Format.getPrettyFormat());
try (FileOutputStream fos = new FileOutputStream("file.xml")) {
    xmlout.output(document, fos);
}