记录一下使用dom4j和jdom这两个API处理字符串型XML的方法,虽然网上也有很多这样的文章,但我还是想再写一遍,方便自己查找。
dom4j是1.6.1版本,jdom是1.1版,代码没什么技术含量,就是API的使用而已,所以没加注释。
import java.io.IOException;
import java.io.StringWriter;
import java.util.List;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.XMLWriter;
public class Dom4JHandle {
private static final String xmlString = "<books><book price=\"108\"><name>Java编程思想</name><author>Bruce Eckel</author></book><book price=\"52\"><name>Effective Java</name><author>Joshua Bloch</author></book><book price=\"118\"><name>Java 7入门经典</name><author>Ivor Horton</author></book></books>";
public static void main(String[] args) {
parseXml(xmlString);
assembleXml();
}
public static void parseXml(String xmlString) {
try {
Document doc = DocumentHelper.parseText(xmlString);
Element root = doc.getRootElement();
@SuppressWarnings("unchecked")
List<Element> elements = root.elements();
for(Element element : elements) {
System.out.println("name=" + element.elementText("name") + "\tauthor=" + element.elementText("author")
+ "\tprice=" + element.attributeValue("price"));
}
} catch (DocumentException e) {
e.printStackTrace();
}
}
public static String assembleXml() {
Document doc = DocumentHelper.createDocument();
Element root = doc.addElement("books");
Element book = root.addElement("book");
book.addAttribute("price", "108");
book.addElement("name").setText("Java编程思想");
book.addElement("author").setText("Bruce Eckel");
book = root.addElement("book");
book.addAttribute("price", "52");
book.addElement("name").setText("Effective Java");
book.addElement("author").setText("Joshua Bloch");
book = root.addElement("book");
book.addAttribute("price", "118");
book.addElement("name").setText("Java 7入门经典");
book.addElement("author").setText("Ivor Horton");
OutputFormat format = OutputFormat.createCompactFormat(); //createPrettyPrint() 层次格式化
StringWriter writer = new StringWriter();
XMLWriter output = new XMLWriter(writer, format);
try {
output.write(doc);
writer.close();
output.close();
System.out.println(writer.toString());
} catch (IOException e) {
e.printStackTrace();
return null;
}
return writer.toString();
}
}
dom4j还可以配合xpath一起使用,一般来说用不上,不过xml比较复杂,而需求又比较特殊的时候就需要它来配合了,不过不用完全记住那些规则,可以去w3cschool网站在线查询:
import java.io.StringReader;
import java.util.List;
import org.jdom.Document;
import org.jdom.Element;
import org.jdom.input.SAXBuilder;
import org.jdom.output.Format;
import org.jdom.output.XMLOutputter;
public class JdomHandle {
private static final String xmlString = "<books><book price=\"108\"><name>Java编程思想</name><author>Bruce Eckel</author></book><book price=\"52\"><name>Effective Java</name><author>Joshua Bloch</author></book><book price=\"118\"><name>Java 7入门经典</name><author>Ivor Horton</author></book></books>";
public static void main(String[] args) {
parseXml(xmlString);
assembleXml();
}
public static void parseXml(String xmlString) {
SAXBuilder builder = new SAXBuilder();
Document doc = null;
try {
doc = builder.build(new StringReader(xmlString));
Element root = doc.getRootElement(); // 根元素
@SuppressWarnings("unchecked")
List<Element> list = root.getChildren();
if (list != null) {
for (Element element : list) {
System.out.println("name=" + element.getChildText("name") + "\tauthor="
+ element.getChildText("author") + "\tprice=" + element.getAttributeValue("price"));
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
public static String assembleXml() {
Document doc = new Document();
Element root = new Element("books");
Element book = new Element("book");
Element name = new Element("name");
Element author = new Element("author");
book.setAttribute("price", "108");
name.addContent("Java编程思想");
author.addContent("Bruce Eckel");
book.addContent(name);
book.addContent(author);
root.addContent(book);
book = new Element("book");
name = new Element("name");
author = new Element("author");
book.setAttribute("price", "52");
name.addContent("Effective Java");
author.addContent("Joshua Bloch");
book.addContent(name);
book.addContent(author);
root.addContent(book);
book = new Element("book");
name = new Element("name");
author = new Element("author");
name.addContent("Java 7入门经典");
author.addContent("Ivor Horton");
book.setAttribute("price", "118");
book.addContent(name);
book.addContent(author);
root.addContent(book);
doc.addContent(root);
XMLOutputter xo = new XMLOutputter(Format.getCompactFormat()); // getPrettyFormat() 层次格式化
System.out.println(xo.outputString(doc));
return xo.outputString(doc);
}
}
本文为菠萝大象原创,如要转载请注明出处。http://www.blogjava.net/bolo
posted on 2013-12-31 10:47
菠萝大象 阅读(6681)
评论(0) 编辑 收藏 所属分类:
dom4j&jdom