jaxp解析xml

前端之家收集整理的这篇文章主要介绍了jaxp解析xml前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
<strong>jaxp是java提供的对xml的解析技术

<?xml version="1.0" encoding="UTF-8"?><span style="color:#FF0000;">//单标签,HTML是双标签</span>
<school>

 <class id="c001">

       <teacher>jack</teacher>

       <student id="s001" birth="1990-2-1" sex="男" name="tom" />

       <student id="s002" birth="1990-1-1" sex="男" name="Mary" />

       <student id="s003" birth="1990-2-10" sex="男" name="M" />
 </class>

</school></strong>


<pre name="code" class="java"><strong>public static void main(String[] args) throws Exception {
		DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
		
		DocumentBuilder builder = factory.newDocumentBuilder();
		
		Document doc = builder.parse(new File("r.xml"));<span style="color:#FF0000;">//默认就是当前项目的根文件夹</span>
		
		loop(doc);
		
		getElement(doc);
		
	}

	private static void getElement(Document doc) {
		
		NodeList list = doc.getElementsByTagName("teacher");

              for(int i = 0; i < list.getLength(); i++)
		{
		 Node node = list.item(i);
		 
		 System.out.println("元素节点名 :"+node.getNodeName());
		
		 System.out.println("元素节点内容 :"+node.getTextContent());
	
		 //获取该元素上的属性
		 NamedNodeMap n = node.getAttributes();
		 
		 for(int j = 0; j < n.getLength(); j++)
		 {
		 System.out.println("属性节点名 :"+n.item(j).getNodeName()+"   属性节点值 :"+n.item(j).getNodeValue());
		 }
		 
		 System.out.println("---------------------------------------");
		
		}
		
		
	}
</strong><pre name="code" class="html"><pre name="code" class="java"><strong><span style="color:#999900;">/* 
</span></strong><pre name="code" class="html"><pre name="code" class="java"><strong></strong><pre name="code" class="html"><pre name="code" class="java"><pre name="code" class="html"><pre name="code" class="java"><strong><span style="color:#999900;">/* </span></strong><pre name="code" class="html"><pre name="code" class="java"><strong>当NodeList list = doc.getElementsByTagName("student");输出</strong>
 元素节点名 :student 

元素节点内容
属性节点名 :birth 属性节点值 :1990-2-1
属性节点名 :id 属性节点值 :s001
属性节点名 :name 属性节点值 :tom
属性节点名 :sex 属性节点值 :男
---------------------------------------
元素节点名 :student
元素节点内容
属性节点名 :birth 属性节点值 :1990-1-1
属性节点名 :id 属性节点值 :s002
属性节点名 :name 属性节点值 :Mary
属性节点名 :sex 属性节点值 :男
---------------------------------------
元素节点名 :student
元素节点内容
属性节点名 :birth 属性节点值 :1990-2-10
属性节点名 :id 属性节点值 :s003
属性节点名 :name 属性节点值 :M
属性节点名 :sex 属性节点值 :男
---------------------------------------
 
 
 
 
 
 




<pre name="code" class="java"><strong>当NodeList list = doc.getElementsByTagName("teacher");输出<span style="color:#999900;"> 
</span></strong>
 元素节点名 :teacher 

元素节点内容 :jack
---------------------------------------
 
 
<pre name="code" class="java"><strong></strong>
<pre name="code" class="html"><pre name="code" class="java"><strong><span style="color:#999900;">
*/</span></strong>
 
 
 


//运用递归的方式获取xml文件所有的节点private static void loop(Node n) {NodeList list = n.getChildNodes(); for (int i = 0; i < list.getLength(); i++){Node nn = list.item(i);System.out.println(nn.getNodeName());

if(nn.getNodeValue()!=null){System.out.print("值是"+nn.getNodeValue());System.out.println();}if(nn.getNodeName()=="student"){Element s = (Element) nn; //node是Node接口的一个实现类ElementSystem.out.println("name is "+s.getAttribute("name"));System.out.println("ID is "+s.getAttribute("id"));System.out.println("birth is "+s.getAttribute("birth"));System.out.println("sex is "+s.getAttribute("sex"));System.out.println("--------------------------------------");}loop(nn);}}
<pre name="code" class="java"><strong><span style="color:#999900;">/* 输出
school
class
teacher
#text
值是jack
student
name is tom
ID is s001
birth is 1990-2-1
sex is 男
--------------------------------------
student
name is Mary
ID is s002
birth is 1990-1-1
sex is 男
--------------------------------------
student
name is M
ID is s003
birth is 1990-2-10
sex is 男
--------------------------------------
*/</span></strong>
 
 
 通过两种不同的遍历可以发现,xml是通过dom树的结构组织的,类似于HTML的dom树组织结构。在Dom中 
一切都是节点,无论是element text attribute都是节点,这些节点统一实现了Node这个接口。也可以在fFirefox中看Dom更直观。

猜你在找的XML相关文章