Attribute
定义了
XML
的属性
|
|
Branch
为能够包含子节点的节点如
XML
元素
(Element)
和文档
(Docuemnts)
定义了一个公共的行为,
|
|
CDATA
定义了
XML CDATA
区域
|
|
CharacterData
是一个标识借口,标识基于字符的节点。如
CDATA
,
Comment, Text
.
|
|
Comment
定义了
XML
注释的行为
|
|
定义了
XML
文档
|
|
DocumentType
定义
XML DOCTYPE
声明
|
|
Element
定义
XML
元素
|
|
ElementHandler
定义了
Element
对象的处理器
|
|
Entity
定义
XML entity
|
|
Node
为所有的
dom4j
中
XML
节点
定义了多态行为
|
|
NodeFilter
定义了在
dom4j
节点中产生的一个滤镜或谓词的行为(
predicate
)
|
|
ProcessingInstruction
定义
XML
处理指令
.
|
|
Text
定义
XML
文本节点
.
|
|
Visitor
用于实现
Visitor
模式
.
|
|
XPath
在分析一个字符串后会提供一个
XPath
表达式
|
//
从文件读取
XML
,输入文件名,返回
XML
文档
public Document read(String fileName) throws MalformedURLException, DocumentException {
SAXReader reader = new SAXReader();
Document document = reader.read(new File(fileName));
return document;
}
|
public Element getRootElement(Document doc){
return doc.getRootElement();
}
|
//
枚举所有子节点
for
( Iterator i = root.elementIterator(); i.hasNext(); ) {
Element element = (Element) i.next();
// do something
}
//
枚举名称为
foo
的节点
for
( Iterator i = root.elementIterator(foo); i.hasNext();) {
Element foo = (Element) i.next();
// do something
}
//
枚举属性
for
( Iterator i = root.attributeIterator(); i.hasNext(); ) {
Attribute attribute = (Attribute) i.next();
// do something
}
|
public void treeWalk() {
treeWalk(getRootElement());
}
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 { // do something....
}
}
}
|
public class MyVisitor extends VisitorSupport {
public void visit(Element element){
System.out.println(element.getName());
}
public
void visit(Attribute attr){
System.out.println(attr.getName());
}
} 调用: root.accept(new MyVisitor()) |
public void bar(Document document) {
List list = document.selectNodes( //foo/bar );
Node node = document.selectSingleNode(//foo/bar/author);
String name = node.valueOf( @name );
}
|
public void findLinks(Document document) throws DocumentException {
List list = document.selectNodes( //a/@href );
for (Iterator iter = list.iterator(); iter.hasNext(); ) {
Attribute attribute = (Attribute) iter.next();
String url = attribute.getValue();
}
}
|
// XML转字符串
Document document = ...;
String text = document.asXML();
//
字符串转
XML
String text = <person> <name>James</name> </person>;
Document document = DocumentHelper.parseText(text);
|
public Document styleDocument(
Document document,
String stylesheet
) throws Exception {
// load the transformer using JAXP
TransformerFactory factory = TransformerFactory.newInstance();
Transformer transformer = factory.newTransformer(
new StreamSource( stylesheet )
);
// now lets style the given document
DocumentSource source = new DocumentSource( document );
DocumentResult result = new DocumentResult();
transformer.transform( source, result );
// return the transformed document
Document transformedDoc = result.getDocument();
return transformedDoc;
}
|
public Document createDocument() {
Document document = DocumentHelper.createDocument();
Element root = document.addElement(root);
Element author1 =
root
.addElement(author)
.addAttribute(name, James)
.addAttribute(location, UK)
.addText(James Strachan);
Element author2 =
root
.addElement(author)
.addAttribute(name, Bob)
.addAttribute(location, US)
.addText(Bob McWhirter);
return document;
}
|
FileWriter
out = new FileWriter( foo.xml );
document.write(out);
|
如果你想改变输出的格式,比如美化输出或缩减格式,可以用XMLWriter类
public 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 );
}
|