Dom4j的常用操作

来源:互联网 发布:sql 创建触发器 编辑:程序博客网 时间:2024/05/21 10:01
import java.io.File;import java.io.FileWriter;import java.io.IOException;import java.util.Iterator;import java.util.List;import javax.xml.transform.Transformer;import javax.xml.transform.TransformerConfigurationException;import javax.xml.transform.TransformerFactory;import javax.xml.transform.stream.StreamSource;import org.dom4j.Attribute;import org.dom4j.Document;import org.dom4j.DocumentException;import org.dom4j.DocumentHelper;import org.dom4j.Element;import org.dom4j.Node;import org.dom4j.io.DocumentResult;import org.dom4j.io.DocumentSource;import org.dom4j.io.OutputFormat;import org.dom4j.io.SAXReader;import org.dom4j.io.XMLWriter;@SuppressWarnings("all")public class Dom4j {public static void main(String[] args) throws Exception {Dom4j dom = new Dom4j();Document doc = dom.read("src/books.xml");Element root = doc.getRootElement();root.accept(new MyVisitor()); // 用访问器迭代节点// Document html = dom.read("src/link.html");}// 创建Documentpublic Document read(String fileName) throws DocumentException {SAXReader reader = new SAXReader();Document document = reader.read(new File(fileName));return document;}public Element getRootElement(Document doc) {return doc.getRootElement();}public void iterator(Element root) {// 枚举所有子节点for (Iterator i = root.elementIterator(); i.hasNext();) {Element element = (Element) i.next();}for (Iterator i = root.attributeIterator(); i.hasNext();) {Attribute element = (Attribute) i.next();}}// 迭代元素public void treeWalk(Element element) {for (int i = 0, size = element.nodeCount(); i < size; i++) {Node node = element.node(i);if (node instanceof Element) {treeWalk((Element) node);} else {}}}public void bar(Document document) {List list = document.selectNodes("//foo/bar");Node node = document.selectSingleNode("//foo/bar/author");String name = node.valueOf("@name");}// 查找HTML中的所有超级链接public void findLinks(Document document) {List list = document.selectNodes("//a/@href");for (Iterator iter = list.iterator(); iter.hasNext();) {Attribute attr = (Attribute) iter.next();String url = attr.getValue();}}public Document styleDocument(Document document, String stylesheet) throws Exception {TransformerFactory factory = TransformerFactory.newInstance();Transformer transformer = factory.newTransformer(new StreamSource(stylesheet));DocumentSource source = new DocumentSource(document);DocumentResult result = new DocumentResult();transformer.transform(source, result);Document transformDocument = result.getDocument();return transformDocument;}// 创建文档public Document createDocument() {Document document = DocumentHelper.createDocument();Element root = document.addElement("root");Element author = root.addElement("author").addAttribute("name", "James").addAttribute("country", "UK").addText("James Strachan");return document;}// 输出XMLpublic void write(Document document) throws IOException {XMLWriter writer = new XMLWriter(new FileWriter("output.xml"));writer.write(document);writer.close();// 美化格式OutputFormat format = OutputFormat.createPrettyPrint();writer = new XMLWriter(System.out, format);writer.write(document);// 缩紧格式format = OutputFormat.createCompactFormat();writer = new XMLWriter(System.out, format);writer.write(document);}}

原创粉丝点击