Основным API Java для XML, который можно использовать для чтения и записи XML, является DOM
StaX
. Однако DOM4J может быть лучше, поскольку он имеет простой и простой API.
Это простой метод для создания документа XML
public void createXML() throws IOException {
Document document = DocumentHelper.createDocument();
Element rootElement = document.addElement("Students");
Element studentElement = rootElement.addElement("student").addAttribute("country", "USA");
studentElement.addElement("id").addText("1");
studentElement.addElement("name").addText("Peter");
XMLWriter writer = new XMLWriter(new FileWriter("Students.xml"));
//Note that You can format this XML document
/*
* FileWriter output = new FileWriter(new File("Students.xml"));
OutputFormat format = OutputFormat.createPrettyPrint();
XMLWriter writer = new XMLWriter(output,format);<- will fomat the output
*/
//You can print this to the console and see what it looks like
String xmlElement = document.asXML();
System.out.println(xmlElement);
writer.write(document);
writer.close();
}
И читать student.xml
public void readXML() throws SAXException, IOException,
ParserConfigurationException, DocumentException {
/*Integration with DOM
DOMReader reader = new DOMReader();
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
Document document = reader.read(builder.parse(new File("Students.xml")));
*/
SAXReader readerSAX = new SAXReader();
Document document2 = readerSAX.read(new File("Students.xml"));
Element root = document2.getRootElement();
Student student = null;
List<Student> studentsList = new ArrayList<Student>();
if (root.getName().equalsIgnoreCase("students")) {
for (@SuppressWarnings("unchecked")
Iterator<Student> i = root.elementIterator(); i.hasNext();) {
Element element = (Element) i.next();
if ("student".equalsIgnoreCase(element.getName())) {
student = new Student();
for (int j = 0, size = element.nodeCount(); j < size; j++) {
Node node = (Node) element.node(j);
if (node instanceof Element) {
if ("id".equalsIgnoreCase(node.getName())) {
student.setId(Integer.parseInt(node.getText()));
} else if ("name".equalsIgnoreCase(node.getName())) {
student.setName(node.getText());
}
}
}
studentsList.add(student);
}
}
}
for(Student stud : studentsList){
System.out.println(stud);
}
}
Спасибо! Я постараюсь понять это завтра, когда мой мозг не будет кучей усталости. – coldblade2000
@ coldblade2000 http://www.ibm.com/developerworks/library/x-dom4j/index.html проверить, что учебник действительно замечательный – LeandreM