在这使用visitor模式解析订购关系同步SyncOrderRelationReq的xml文件
import org.dom4j.Attribute;
import org.dom4j.Element;
import org.dom4j.VisitorSupport;
public class MyVisitor extends VisitorSupport {
HashMap<String,String> hm=new HashMap<String, String>();
@Override
public void visit(Attribute node) {
System.out.println(node.getValue());
}
@Override
public void visit(Element node) {
System.out.println(node.getName());
hm.put(node.getName(), node.getTextTrim());
}
public HashMap<String, String> getHm() {
return hm;
}
}
Visitor接口提供各种visit方法重载,根据XML不同的对象,将采用不同的方式来访问,如
void | visit(Attribute node) Visits the given Attribute |
void | visit(CDATA node) Visits the given CDATA |
void | visit(Comment node) Visits the given Comment |
void | visit(Document document) Visits the given Document |
void | visit(DocumentType documentType) Visits the given DocumentType |
void | visit(Element node) Visits the given Element |
上面代码是给出的Element和Attribute的简单实现,一般比较常用的就是这两个。
VisitorSupport 实现Visitor接口,提供了各种visit(*)的空实现.
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
//接下来使用SAXReader 读取请求输入流,获得document对象
SAXReader sread=new SAXReader();
Document doct=sread.read(request.getInputStream());
//获得根元素
Element root=doct.getRootElement();
logger.info("获取根元素"+root);
MyVisitor myv=new MyVisitor();
root.accept(myv);//在这里需要注意的是,程序将自动遍历子节点!
程序输入结果为xml文档各节点名称.