寫入 XML 檔案
使用 XOM 寫入 XML 檔案與讀取它非常相似,除非在這種情況下我們正在建立例項而不是從根目錄中檢索它們。
要建立一個新元素,請使用建構函式 Element(String name)
。你將需要建立一個根元素,以便你可以輕鬆地將其新增到 Document
。
Element root = new Element("root");
Element
類有一些方便的編輯元素的方法。它們列在下面:
appendChild(String name)
- 這將基本上將元素的值設定為 name。appendChild(Node node)
- 這將使node
成為父元素。 (元素是節點,因此你可以解析元素)。addAttribute(Attribute attribute)
- 將為元素新增屬性。
Attribute
類有幾個不同的建構函式。最簡單的是 Attribute(String name, String value)
。
一旦將所有元素新增到根元素,就可以將其轉換為 Document
。Document
將在其建構函式中將 Element
作為引數。
你可以使用 Serializer
將 XML 寫入檔案。你需要在 Serializer
的建構函式中建立一個新的輸出流來解析。
FileOutputStream fileOutputStream = new FileOutputStream(file);
Serializer serializer = new Serializer(fileOutputStream, "UTF-8");
serializer.setIndent(4);
serializer.write(doc);
例
碼:
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import nu.xom.Attribute;
import nu.xom.Builder;
import nu.xom.Document;
import nu.xom.Element;
import nu.xom.Elements;
import nu.xom.ParsingException;
import nu.xom.Serializer;
public class XMLWriter{
public static void main(String[] args) throws UnsupportedEncodingException,
IOException{
// root element <example>
Element root = new Element("example");
// make a array of people to store
Person[] people = {new Person("Smith", "Dan", "years", "green", 23),
new Person("Autry", "Bob", "months", "N/A", 3)};
// add all the people
for (Person person : people){
// make the main person element <person>
Element personElement = new Element("person");
// make the name element and it's children: first and last
Element nameElement = new Element("name");
Element firstNameElement = new Element("first");
Element lastNameElement = new Element("last");
// make age element
Element ageElement = new Element("age");
// make favorite color element
Element favColorElement = new Element("fav_color");
// add value to names
firstNameElement.appendChild(person.getFirstName());
lastNameElement.appendChild(person.getLastName());
// add names to name
nameElement.appendChild(firstNameElement);
nameElement.appendChild(lastNameElement);
// add value to age
ageElement.appendChild(String.valueOf(person.getAge()));
// add unit attribute to age
ageElement.addAttribute(new Attribute("unit", person.getAgeUnit()));
// add value to favColor
favColorElement.appendChild(person.getFavoriteColor());
// add all contents to person
personElement.appendChild(nameElement);
personElement.appendChild(ageElement);
personElement.appendChild(favColorElement);
// add person to root
root.appendChild(personElement);
}
// create doc off of root
Document doc = new Document(root);
// the file it will be stored in
File file = new File("out.xml");
if (!file.exists()){
file.createNewFile();
}
// get a file output stream ready
FileOutputStream fileOutputStream = new FileOutputStream(file);
// use the serializer class to write it all
Serializer serializer = new Serializer(fileOutputStream, "UTF-8");
serializer.setIndent(4);
serializer.write(doc);
}
private static class Person {
private String lName, fName, ageUnit, favColor;
private int age;
public Person(String lName, String fName, String ageUnit, String favColor, int age){
this.lName = lName;
this.fName = fName;
this.age = age;
this.ageUnit = ageUnit;
this.favColor = favColor;
}
public String getLastName() { return lName; }
public String getFirstName() { return fName; }
public String getAgeUnit() { return ageUnit; }
public String getFavoriteColor() { return favColor; }
public int getAge() { return age; }
}
}
這將是“out.xml”的內容: