标签:
在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();
}
}
标签:
原文地址:http://www.cnblogs.com/laobiao/p/5599238.html