您的位置:首页 > 其它

jdom和dom4j读取xml文件以及生成xml文件的方法

2010-07-31 08:20 555 查看
1、使用dom4j的方式遍历xml文件

public class MyDom4J {

public static void main(String[] args) throws Exception {

SAXReader reader = new SAXReader();//创建 SAXReader对象
Document document = reader.read(new File("src/hibernate.hbm.xml"));//读取xml文件--创建Document对象
Element rootElement = document.getRootElement();//获取根节点元素
prin("根节点名--"+rootElement.getName());
for(Iterator it = rootElement.elementIterator();it.hasNext(); ){//遍历根节点下面的子元素
Element element = (Element) it.next();
prin("子节点--"+element.getName());
for(Iterator i = element.attributeIterator();i.hasNext();){//遍历子元素的属性名称及属性值
Attribute attribute = (Attribute) i.next();
prin("节点属性--"+attribute.getName()+"属性的值--"+attribute.getValue());//getName()取得节点的属性 getValue取得属性的值
}
}
}

public static void prin(Object o){
System.out.println(o);
}

}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

2、使用jdom的方式遍历xml文件

public class MyJDom {

public static void main(String[] args) throws Exception{

SAXBuilder sb=new SAXBuilder();//建立构造器 SAXBuilder
Document doc=sb.build(new FileInputStream("src/jdomt.xml"));//读入指定文件
Element root=doc.getRootElement();//获得根节点
@SuppressWarnings("unchecked")
List list=root.getChildren();//将根节点下的所有子节点放入List中
for(int i=0;i<list.size();i++) {
System.out.println("---------------------------");
Element item=(Element)list.get(i);//取得节点实例
String id=item.getAttribute("id").getValue();//取得属性值
System.out.println("id-->"+id);

Element sub=item.getChild("title");//取得当前节点的字节点
String text=sub.getText();//取得当前节点的值
System.out.println("Title-->"+text);
if(item.getChild("content").getChildren().size()>0){
Element sub2=item.getChild("content").getChild("name");
String text2=sub2.getText();
System.out.println("name-->"+text2);
}
Element sub3=item.getChild("email");
String text3=sub3.getText();
System.out.println("Email-->"+text3);
}
}
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

//也可以使用xpath的方式读取配置文件属性
List<Node> list = document.selectNodes("//hibernate-mapping/class/property");
for(Node n : list){
System.out.println("节点名:"+n.getName()+"属性值:"+n.valueOf("@name"));
}
//这里需要添加jaxen-1.1-beta-7.jar包

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

--使用jdom生成xml文件 // 模拟生成Hibernate映射文件
public class CreateXML {
public static void main (String[] args) throws Exception {
createDocument();
}
public static Document createDocument () throws Exception{
Document document = DocumentHelper.createDocument();//使用DocumentHelp创建一个Document对象
Element rootElement = document.addElement("hibernate-mapping");//创建根节点
Element e = rootElement.addElement("class")//在根节点下添加子节点
.addAttribute("name", "UserInfo")//class-属性name、table
.addAttribute("table", "t_userinfo")
.addElement("id").addAttribute("name", "id").addElement("generator").addAttribute("class", "native")//class下面子节点id--属性name value id
//在class节点下添加新的节点
.getParent().getParent().addElement("property")//property属性是id属性的兄弟节点
.addAttribute("name", "type").addAttribute("name", "info");
//可是使用链式编程
//FileWriter out = new FileWriter("src/user.hbm.xml");
OutputFormat format = OutputFormat.createPrettyPrint();
XMLWriter writer = new XMLWriter(
new FileWriter("src/user.hbm.xml"),format
);
//document.write(out);
writer.write(document);
writer.close();
//out.flush();
//out.close();
return document;
}
}

总结:jdom和dom4j最明显的区别就是jdom是基于树的处理xnml的Java API,一次性把树加载到内存中.而dom4j它合并了许多超出基本 XML 文档表示的功能,包括集成的 XPath 支持、XML Schema 支持以及用于大文档或流化文档的基于事件的处理.在应用上都非常的方便,封装了底层的DOM和SAX,大大简化了编程工作!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: