XML文件解析!!!

Posted 搬砖工的奋斗史

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了XML文件解析!!!相关的知识,希望对你有一定的参考价值。

在java   jdk中解析XMl文件使用 org.w3c.dom.Document工具

一下是写入全程:

 

import java.io.File;
import java.io.IOException;
import java.io.StringWriter;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerConfigurationException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;

import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.xml.sax.SAXException;


public class CreatXML {

	/**
	 * 创建一个XML文件
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub

		
		try {
			
			
			DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance();//可获取XML解析器
			DocumentBuilder builder = factory.newDocumentBuilder();//获取文档生成器
			Document document=builder.newDocument();//获取文档实例
			Element root=document.createElement("languages");//创建一个根元素
			root.setAttribute("cat", "it");//给根元素添加一个cat="it" 的属性
			
			Element lan1=document.createElement("lan");//创建一个元素标签名为<lan>
			lan1.setAttribute("id", "1");//添加属性
			Element name1=document.createElement("name");//创建一个name标签
			name1.setTextContent("java");//为name标签设置内容
			Element ide1=document.createElement("ide");//创建一个ide标签
			ide1.setTextContent("Eclipse");//为表填添加内容
			
			lan1.appendChild(name1);
			lan1.appendChild(ide1);//让name1和 ide1标签成为lan1标签的子节点
			root.appendChild(lan1);//将lan1添加到root 的子节点
			
			document.appendChild(root);//将root添加到文档
			
			
			//将document转化成流数据 以便储存在文件 或者传输
			
			TransformerFactory transformerFactory= TransformerFactory.newInstance();
			Transformer transformer=transformerFactory.newTransformer();
			StringWriter writer=new StringWriter();
			transformer.transform(new DOMSource(document), new StreamResult(writer));//将document转换成输出流
			System.out.println(writer.toString());
			
			transformer.transform(new DOMSource(document), new StreamResult(new File("newXML.xml")));//将document保存到文件
			
				
			
		} catch (Exception e) {
			e.printStackTrace();
		}
		
	
		
		
	}

}

  

 

以下是解析全程:

import java.io.File;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;

import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
/**
 * 解析xml文件
 * 
 *
 */

public class ShowXML {

	
	public static void main(String[] args) throws Exception {
		
		DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance();//可获取XML解析器
		DocumentBuilder builder=factory.newDocumentBuilder();//获取文档生成器
		Document document=builder.parse(new File("workspace.xml"));//获取文档
		Element root=document.getDocumentElement();//获取文档元素(这里是主元素)
		System.out.println("version="+root.getAttribute("version"));//输出查看元素属性
		NodeList list=root.getElementsByTagName("component");//获取所有component标签节点
		for (int i = 0; i < list.getLength(); i++) {//遍历节点
			Element component=(Element) list.item(i);//获取节点
			System.out.println("----------------------------------");
			System.out.println("component"+i+".name="+component.getAttribute("name"));//输出节点元素属性
			//System.out.println(component.getTextContent());//获取节点内的文本
			NodeList list1=component.getChildNodes();//获取component元素的所有子元素
			for (int j = 0; j < list1.getLength(); j++) {//遍历子元素
				System.out.println("-----------------------------------------");
				Node componentchild=list1.item(j);//获取子元素节点
				
				System.out.println(componentchild.getNodeName());//输出子元素标签名
				//System.out.println(componentchild.getTextContent());//输出子元素的文本内容
				//输出中有些无用的节点#text 代表换行空白的节点
				//去除#text的方法 判断这个节点是不是一个元素再输出
				/*if(componentchild instanceof Element){
					System.out.println(componentchild.getNodeName());//输出子元素标签名			
					
				}*/
				
			}
			
		}
		
		
		
	}
}

  

 

还有一种引用Dom4j.jar 工具包

写入Xml

package Dom4j_XMl;

import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileOutputStream;

import org.dom4j.Document;
import org.dom4j.DocumentHelper;

public class Dom4j {

	/**
	 * Dom4j使用 快捷的进行XML读写
	 * @param args
	 * @throws Exception 
	 */
	public static void main(String[] args) throws Exception {
		// TODO Auto-generated method stub
		String xmlval="<peopre><name>老表</name><age>26</age></peopre>";
		Document document=DocumentHelper.parseText(xmlval);
		
		System.out.println(document.asXML());//直接可以输出XML格式的数据
		
		File file=new File("mynews.xml");
		if(!file.isAbsolute()){
			
			file.createNewFile();
		}
		byte[] xmlbyte=xmlval.getBytes("utf-8");
		
		FileOutputStream out=new FileOutputStream(file);
		BufferedOutputStream bout=new BufferedOutputStream(out);
		bout.write(xmlbyte);
		bout.flush();
		out.close();
		bout.close();
		
		
		
	}

}

  

以上是关于XML文件解析!!!的主要内容,如果未能解决你的问题,请参考以下文章

在Tomcat的安装目录下conf目录下的server.xml文件中增加一个xml代码片段,该代码片段中每个属性的含义与用途

DOM解析xml文件

无法解析片段中的 findViewById [重复]

java解析xml的几种方式哪种最好?

Expat Parser解析xml文件

jsoup解析xml某片段的问题