在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(); } }
时间: 2024-10-13 09:46:58