当前位置: 移动技术网 > IT编程>开发语言>Java > Java-XML

Java-XML

2018年10月09日  | 移动技术网IT编程  | 我要评论

王菲菲个人资料,暖奶器有用吗,试婚王妃

 1 import java.io.file;
 2 import java.io.fileinputstream;
 3 import java.io.inputstream;
 4 import javax.xml.parsers.documentbuilder;
 5 import javax.xml.parsers.documentbuilderfactory;
 6 import org.w3c.dom.document;
 7 import org.w3c.dom.element;
 8 import org.w3c.dom.node;
 9 import org.w3c.dom.nodelist;
10 
11 /**
12  *    读取xml文件1 
13  */
14 public class xmlreader {
15      public static void main(string[] args) {   
16         xmlreader reader = new xmlreader();   
17     }   
18     public  xmlreader(){   
19         //得到 dom 解析器的工厂实例  
20         documentbuilderfactory domfac = documentbuilderfactory.newinstance();   
21         try {   
22             //从 dom 工厂获得 dom 解析器
23             documentbuilder dombuilder = domfac.newdocumentbuilder();   
24             //把要解析的 xml 文档转化为输入流,以便 dom 解析器解析它
25             inputstream is = new fileinputstream(new file("languages.xml"));  
26             //解析 xml 文档的输入流,得到一个 document
27             document doc = dombuilder.parse(is);   
28             //获到 xml 文档的根节点
29             element root = doc.getdocumentelement();  
30             //获到节点的子节点
31             nodelist books = root.getchildnodes();   
32             if(books!=null){   
33                 for (int i = 0; i < books.getlength(); i++) {   
34                     node book = books.item(i);   
35                     //node.text_node         文本节点
36                     //node.document_node     文档节点
37                     //node.entity_node         实体节点
38                     //node.attribute_node     属性节点
39                     //node.element_node     元素节点
40                      if(book.getnodetype()==node.element_node) {  //判断节点类型是元素节点时
41                         //取得节点的属性值,节点的属性也是它的子节点。它的节点类型也是node.element_node
42                         string email = book.getattributes().getnameditem("id").getnodevalue();   
43                        
44                         //轮循子节点   
45                         for(node node=book.getfirstchild();node!=null;node=node.getnextsibling()) {   
46                             //因为节点中包含了元素节点、属性节点、文本节点等。
47                             if(node.getnodetype()==node.element_node) {   //判断节点类型是元素节点时
48                                 if(node.getnodename().equals("name")) {   
49                                     string name1 = node.getfirstchild().getnodevalue();   
50                                     system.out.println(name1);   
51                                 }   
52                                 if(node.getnodename().equals("ide")) {   
53                                     string price=node.getfirstchild().getnodevalue();   
54                                     system.out.println(price);   
55                                 }   
56                             }   
57                         }   
58                      }   
59                 }   
60             }   
61         } catch (exception e) {   
62             e.printstacktrace();   
63         }   
64     }   
65 }
 
1 //languages.xml
2 
3 <?xml version="1.0" encoding="utf-8"?>
4 <languages cat="it">
5     <lan id="1">
6         <name>java</name>
7         <ide>eclipse</ide>
8     </lan>
9 </languages>


1 import java.io.file; 2 import java.io.ioexception; 3 4 import javax.xml.parsers.documentbuilder; 5 import javax.xml.parsers.documentbuilderfactory; 6 import javax.xml.parsers.parserconfigurationexception; 7 8 import org.w3c.dom.document; 9 import org.w3c.dom.element; 10 import org.w3c.dom.node; 11 import org.w3c.dom.nodelist; 12 import org.xml.sax.saxexception; 13 /** 14 * 读取xml文件2 15 * ( 1 )获取 dom 解析器的工厂实例 documentbuilderfactory domfac=documentbuilderfactory.newinstance(); 16 * ( 2 )从 dom 工厂获得 dom 解析器:documentbuilder dombuilder=domfac.newdocumentbuilder(); 17 * ( 3 )把要解析的 xml 文档转化为输入流,以便 dom 解析器解析它:inputstream is = new fileinputstream("test1.xml"); 18 * ( 4 )解析 xml 文档的输入流,得到一个 document:document doc = dombuilder.parse(is); 19 * 也可以根据file对象获取document对象:document document = builder.parse(new file("languages.xml")); 20 * ( 5 )得到 xml 文档的根节点:element root=doc.getdocumentelement(); 21 * ( 6 )得到节点的子节点:nodelist books=root.getchildnodes(); 22 */ 23 public class readxml { 24 public static void main(string[] args) { 25 try { 26 //获取 dom 解析器的工厂实例 27 documentbuilderfactory factory = documentbuilderfactory.newinstance(); 28 //从 dom 工厂获得 dom 解析器 29 documentbuilder builder = factory.newdocumentbuilder(); 30 //根据file对象获取document对象 31 document document = builder.parse(new file("./data/languages.xml")); 32 //根据document对象获取xml 文档的根节点 33 element root = document.getdocumentelement(); 34 35 string nodename = root.getnodename(); //获取节点名称 36 string attribute = root.getattribute("cat"); // 获取属性的值 37 38 nodelist list = root.getelementsbytagname("lan"); //根据节点名称获取节点集 39 for (int i = 0; i < list.getlength(); i++) { 40 element lan = (element) list.item(i); //获取节点集中的节点 41 string attribute2 = lan.getattribute("id"); //根据属性值 42 43 nodelist clist = lan.getchildnodes(); //获取节点下的所有子节点集 44 for (int j = 0; j < clist.getlength(); j++) { 45 node c = clist.item(j); //获取节点 46 if (c instanceof element) { 47 string elename = c.getnodename();//节点名称 48 string eletext = c.gettextcontent();//文本内容,标签之间的内容 49 system.out.println(elename + "=" + eletext); 50 } 51 } 52 } 53 } catch (parserconfigurationexception e) { 54 e.printstacktrace(); 55 } catch (saxexception e) { 56 e.printstacktrace(); 57 } catch (ioexception e) { 58 e.printstacktrace(); 59 } 60 } 61 }
 1 import java.io.file;
 2 import java.io.stringwriter;
 3 import javax.xml.parsers.documentbuilder;
 4 import javax.xml.parsers.documentbuilderfactory;
 5 import javax.xml.parsers.parserconfigurationexception;
 6 import javax.xml.transform.outputkeys;
 7 import javax.xml.transform.transformer;
 8 import javax.xml.transform.transformerconfigurationexception;
 9 import javax.xml.transform.transformerexception;
10 import javax.xml.transform.transformerfactory;
11 import javax.xml.transform.dom.domsource;
12 import javax.xml.transform.stream.streamresult;
13 import org.w3c.dom.document;
14 import org.w3c.dom.element;
15 
16 /**
17  * 创建并写入xml文件
18  * 使用dom方式生成xml文件有如下几步:
19  * 首先是创建dom树(即规定xml文件中的内容):
20  * 创建documentbuilderfactory对象
21  * 通过documentbuilderfactory对象创建documentbuilder对象
22  * 通过documentbuilder对象的newdocument()方法创建一个document对象,该对象代表一个xml文件
23  * 通过document对象的createelement()方法创建根节点
24  * 通过document对象的createelement()方法创建n个子节点,并为他们赋值,再将这些子节点添加到根节点下
25  * 将根节点添加到document对象下
26  */
27 public class creatxml {
28     public static void main(string[] args) {
29         try {
30             //获取dom 解析器的工厂实例 
31             documentbuilderfactory factory = documentbuilderfactory.newinstance();
32             //从 dom 工厂获得 dom 解析器
33             documentbuilder builder = factory.newdocumentbuilder();
34             //创建一个document对象,该对象代表一个xml文件
35             document document = builder.newdocument();
36             //设置xml声明中standalone为yes,即没有dtd和schema作为该xml的说明文档,且不显示该属性
37             document.setxmlstandalone(true);
38             //创建根节点
39             element root = document.createelement("languages");
40             
41             root.setattribute("cat", "it");//节点添加属性和属性值
42             
43             element lan1 = document.createelement("lan"); //创建节点
44             lan1.setattribute("id", "1"); //设置节点属性
45             
46             element name1 = document.createelement("name");//创建节点
47             name1.settextcontent("java"); //设置节点之间的内容
48             
49             element ide1 = document.createelement("ide");//创建节点
50             ide1.settextcontent("eclipse"); //设置节点之间的内容
51             
52             //向节点中添加子节点
53             lan1.appendchild(name1);
54             lan1.appendchild(ide1);
55             
56             //向根节点添加子节点
57             root.appendchild(lan1);
58             
59             //向文件中添加根节点
60             document.appendchild(root);
61             
62             /**
63              * 将dom树转换为xml文件:
64              * 创建transformerfactory类的对象
65              * 通过transformerfactory创建transformer对象
66              * 使用transformer对象的transform()方法将dom树转换为xml文件
67              * (该方法有两个参数,第一个参数为源数据,需要创建domsource对象并将document加载到其中;
68              *      第二个参数为目的文件,即要生成的xml文件,需要创建streamresult对象并指定目的文件)
69              */
70             //获取transformerfactory类的一个实例
71             transformerfactory transformerfactory = transformerfactory.newinstance();
72             //通过transformerfactory类的一个实例,创建transformer对象
73             transformer transformer = transformerfactory.newtransformer();
74             //设置输出时的编码
75             transformer.setoutputproperty("encoding", "utf-8");
76             transformer.setoutputproperty(outputkeys.indent, "yes");// 设置输出数据时换行
77             
78             
79             //将dom树转换为xml文件
80             //第一个参数为源数据,需要创建domsource对象并将document加载到其中
81             //第二个参数为目的文件,即要生成的xml文件,需要创建streamresult对象并指定目的文件
82             transformer.transform(new domsource(document), new streamresult(new file("./data/languages.xml")));
83             
84             
85             stringwriter writer = new stringwriter();
86             transformer.transform(new domsource(document), new streamresult(writer));
87             system.out.println(writer.tostring());//将流输出到控制台
88         } catch (parserconfigurationexception e) {
89             e.printstacktrace();
90         } catch (transformerconfigurationexception e) {
91             e.printstacktrace();
92         } catch (transformerexception e) {
93             e.printstacktrace();
94         }
95     }
96 }
  1 import java.io.file;
  2 import java.io.stringwriter;
  3 
  4 import javax.xml.parsers.documentbuilder;
  5 import javax.xml.parsers.documentbuilderfactory;
  6 import javax.xml.parsers.parserconfigurationexception;
  7 import javax.xml.transform.outputkeys;
  8 import javax.xml.transform.transformer;
  9 import javax.xml.transform.transformerconfigurationexception;
 10 import javax.xml.transform.transformerexception;
 11 import javax.xml.transform.transformerfactory;
 12 import javax.xml.transform.transformerfactoryconfigurationerror;
 13 import javax.xml.transform.dom.domsource;
 14 import javax.xml.transform.stream.streamresult;
 15 
 16 import org.w3c.dom.domexception;
 17 import org.w3c.dom.document;
 18 
 19 public class createconfigxmlutil {
 20     
 21     public document getdocument() {
 22         //创建一个document对象,该对象代表一个xml文件
 23         document document = null;;
 24         try {
 25             //获取dom 解析器的工厂实例 
 26             documentbuilderfactory factory = documentbuilderfactory.newinstance();
 27             //从 dom 工厂获得 dom 解析器
 28             documentbuilder builder = factory.newdocumentbuilder();
 29             document = builder.newdocument();
 30             //设置xml声明中standalone为yes,即没有dtd和schema作为该xml的说明文档,且不显示该属性
 31             document.setxmlstandalone(true);
 32         } catch (domexception e) {
 33             e.printstacktrace();
 34         } catch (parserconfigurationexception e) {
 35             e.printstacktrace();
 36         }
 37         return document;
 38     }
 39     
 40     /**
 41      * @title: xmltofile
 42      * @description: xml输出到文件
 43      * @param document
 44      * @param filepath
 45      * @return void  返回类型
 46      * @throws
 47      */
 48     public void xmltofile(document document,string filepath) {
 49         /**
 50          * 将dom树转换为xml文件:
 51          * 创建transformerfactory类的对象
 52          * 通过transformerfactory创建transformer对象
 53          * 使用transformer对象的transform()方法将dom树转换为xml文件
 54          * (该方法有两个参数,第一个参数为源数据,需要创建domsource对象并将document加载到其中;
 55          *      第二个参数为目的文件,即要生成的xml文件,需要创建streamresult对象并指定目的文件)
 56          */
 57         try {
 58             //获取transformerfactory类的一个实例
 59             transformerfactory transformerfactory = transformerfactory.newinstance();
 60             //通过transformerfactory类的一个实例,创建transformer对象
 61             transformer transformer = transformerfactory.newtransformer();
 62             //设置输出时的编码
 63             transformer.setoutputproperty("encoding", "utf-8");
 64             transformer.setoutputproperty(outputkeys.indent, "yes");// 设置输出数据时换行
 65             //将dom树转换为xml文件
 66             //第一个参数为源数据,需要创建domsource对象并将document加载到其中
 67             //第二个参数为目的文件,即要生成的xml文件,需要创建streamresult对象并指定目的文件
 68             //"./data/languages.xml"
 69             transformer.transform(new domsource(document),
 70                     new streamresult(new file(filepath)));
 71         } catch (transformerconfigurationexception e) {
 72             e.printstacktrace();
 73         } catch (illegalargumentexception e) {
 74             e.printstacktrace();
 75         } catch (transformerfactoryconfigurationerror e) {
 76             e.printstacktrace();
 77         } catch (transformerexception e) {
 78             e.printstacktrace();
 79         }
 80     }
 81     
 82     /**
 83      * @title: xmltoconsole
 84      * @description: xml输出到控制台
 85      * @param document
 86      * @return void  返回类型
 87      * @throws
 88      */
 89     public static void xmltoconsole(document document) {
 90         try {
 91             //获取transformerfactory类的一个实例
 92             transformerfactory transformerfactory = transformerfactory.newinstance();
 93             //通过transformerfactory类的一个实例,创建transformer对象
 94             transformer transformer = transformerfactory.newtransformer();
 95             //设置输出时的编码
 96             transformer.setoutputproperty("encoding", "utf-8");
 97             transformer.setoutputproperty(outputkeys.indent, "yes");// 设置输出数据时换行
 98             stringwriter writer = new stringwriter();
 99             transformer.transform(new domsource(document), new streamresult(writer));
100             system.out.println(writer.tostring());//将流输出到控制台
101         } catch (transformerconfigurationexception e) {
102             e.printstacktrace();
103         } catch (illegalargumentexception e) {
104             e.printstacktrace();
105         } catch (transformerfactoryconfigurationerror e) {
106             e.printstacktrace();
107         } catch (transformerexception e) {
108             e.printstacktrace();
109         }
110     }
111 }

 

dom4j

1 //test-xml-1.xml
2 
3 <?xml version="1.0" encoding="utf-8"?>
4 
5 <root>
6   <author name="james" location="uk">james strachan
7     <author name="bob" location="us">bob mcwhirter</author>
8   </author>
9 </root>

 

  1 public class dom4jxmlutil {
  2     
  3     public static void main(string[] args) {
  4         createxmlfile();
  5     }
  6     
  7     public static void createxmlfile() {
  8         try {
  9              document document = documenthelper.createdocument();
 10              element root = document.addelement("root");
 11              
 12              element ele = root.addelement("author")
 13                 .addattribute("name", "james") //节点属性 name=james
 14                 .addattribute("location", "uk")//节点属性 location=uk
 15                 .addtext("james strachan");//节点文本 james strachan
 16 
 17              ele.addelement("author")
 18                 .addattribute("name", "bob")
 19                 .addattribute("location", "us")
 20                 .addtext("bob mcwhirter");
 21             
 22             // 写入到一个新的文件中 
 23             writer(document,"./data/test-xml-1.xml");
 24         } catch (exception e) {
 25             e.printstacktrace();
 26         }
 27     }
 28     
 29     /** 
 30      * 把document对象写入新的文件 
 31      */  
 32     public static void writer(document document,string filepath) throws exception {  
 33         // 紧凑的格式  
 34         // outputformat format = outputformat.createcompactformat();  
 35         // 排版缩进的格式  
 36         outputformat format = outputformat.createprettyprint();  
 37         // 设置编码  
 38         format.setencoding("utf-8");  
 39         // 创建xmlwriter对象,指定了写出文件及编码格式  
 40         // xmlwriter writer = new xmlwriter(new filewriter(new  
 41         // file("src//a.xml")),format);  
 42         xmlwriter writer = new xmlwriter(new outputstreamwriter(  
 43                 new fileoutputstream(new file(filepath)), "utf-8"), format);  
 44         writer.write(document);// 写入    
 45         writer.flush();// 立即写入  
 46         writer.close();// 关闭操作    
 47     }  
 48     
 49     public void readxmldemo() throws exception {  
 50         // 创建saxreader对象  
 51         saxreader reader = new saxreader();  
 52         // 通过read方法读取一个文件 转换成document对象  
 53         document document = reader.read(new file("./data/test-xml-1.xml"));  
 54         element node = document.getrootelement();//获取根节点元素对象    
 55         //遍历所有的元素节点  
 56         listnodes(node); 
 57         //elementmethod(node);
 58     }
 59 
 60     /** 
 61      * 遍历当前节点元素下面的所有(元素的)子节点 
 62      */  
 63     public void listnodes(element node) {  
 64         string nodename = node.getname();//节点名称,标签名
 65         system.out.println("当前节点名称:"+nodename);
 66         // 获取当前节点的所有属性节点  
 67         @suppresswarnings("unchecked")
 68         list<attribute> list = node.attributes();//当前节点的所有属性节点,例如:name=james location=uk
 69         // 遍历属性节点  
 70         for (attribute attr : list) {  
 71             string attrtext = attr.gettext();//属性值
 72             string attrvalue = attr.getvalue();//属性值,与gettext()相同
 73             string attrname = attr.getname();//属性名称
 74             system.out.println(attrtext+"--"+attrvalue+"--"+attrname);
 75         }  
 76         
 77         if (!(node.gettexttrim().equals(""))) {  
 78             string nodetext = node.gettext();//节点文本值
 79             system.out.println(nodetext);
 80         }  
 81         //node.elementiterator("author");  指定某个节点,获取其下面子节点的迭代器
 82         @suppresswarnings("unchecked")
 83         iterator<element> it = node.elementiterator();//当前节点下子节点的迭代器 
 84         while (it.hasnext()) {  
 85             element e = it.next();// 获取某个子节点对象
 86             listnodes(e);// 对子节点进行遍历  
 87         }  
 88     }  
 89 
 90     /** 
 91      * 介绍element中的element方法和elements方法的使用 
 92      */  
 93     public void elementmethod(element node) {  
 94         // 获取node节点中,子节点的元素名称为supercars的元素节点。  
 95         element e = node.element("supercars");  
 96         // 获取supercars元素节点中,子节点为carname的元素节点(可以看到只能获取第一个carname元素节点)  
 97         element carname = e.element("carname");  
 98 
 99         string ename = e.getname();
100         string ctext = carname.gettext();
101         system.out.println(ename+"--"+ctext);
102 
103         // 获取supercars这个元素节点 中,所有子节点名称为carname元素的节点 。  
104         @suppresswarnings("unchecked")
105         list<element> carnames = e.elements("carname");  
106         for (element cname : carnames) {  
107             string text = cname.gettext();
108             system.out.println(text);//获取节点的文本值,也就是标签之前的内容
109         }  
110 
111         @suppresswarnings("unchecked")
112         list<element> elements = e.elements();// 获取supercars这个元素节点 所有元素的子节点。  
113         for (element el : elements) {  
114             string text = el.gettext();
115             system.out.println(text);//获取节点的文本值,也就是标签之前的内容  
116         }  
117     }  
118 }  
1         <!-- xml解析 -->
2         <dependency>
3             <groupid>dom4j</groupid>
4             <artifactid>dom4j</artifactid>
5             <version>1.6.1</version>
6         </dependency>

 

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网