• 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();
    		
    		
    		
    	}
    
    }
    

      

  • 相关阅读:
    UI复习笔记1
    PHP字符串 集合的相关函数
    PHP的基本知识点
    XMLDictionary 解析的使用
    Json解析
    数据库增 删 改 查
    UICollectionViewFlowLayout自定义
    除了自定义cell以为,还可以通过属性来控制cell线条的长度
    观察者模式
    PHP字符串相关的方法
  • 原文地址:https://www.cnblogs.com/laobiao/p/5599238.html
Copyright © 2020-2023  润新知