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,大大简化了编程工作!
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,大大简化了编程工作!
相关文章推荐
- 在java环境下读取xml文件的方法主要有4种:DOM、SAX、JDOM、JAXB、Dom4J
- 读取XML文件DOM4J方法
- dom4j创建了读取xml文件的方法总结
- Java编程中操作XML文件(生成方法三:JDOM)
- Java编程操作XML文件(生成方法四:DOM4J)
- JDOM、DOM4j读取XML文件(SAXReader)
- jdom 或 dom4j读取xml文件时如何让dtd验证使用本地dtd文件或者不生效
- jdom 或 dom4j读取xml文件时如何让dtd验证使用本地dtd文件或者不生效
- 使用jxl工具包生成Excel以及读取Excel的方法
- 使用dom4j四种读取xml文件的方法
- 生成和读取XML文件的方法
- java环境下读取xml文件的方法主要有4种:DOM、SAX、JDOM、JAXB
- 用dom、jdom、dom4j来实现取出Oracle中dept表内容,并生成xml文件
- java中解析xml文件的五种常见方法:DOM4J,dom,pull,SAX,Jdom
- DOM、SAX、JDOM、DOM4J以及PULL在XML文件解析中的工作原理以及优缺点对比
- 使用dom4j四种读取xml文件的方法
- dom4j从jar包中读取xml文件的方法
- DOM、SAX、JDOM、DOM4J以及PULL在XML文件解析中的工作原理以及优缺点对比
- DOM、SAX、JDOM、DOM4J以及PULL在XML文件解析中的工作原理以及优缺点对比
- php从数据库中读取数据生成xml文件的方法