zoukankan      html  css  js  c++  java
  • Java读取xml数据

    xml中的代码

    <?xml version="1.0" encoding="UTF-8"?>
    
    <books id="aaa">
       <book id="1">
           <name>书名1</name>
           <price>100</price>
       </book>
       <book id="2"> 
           <name>书名2</name>
           <price>300</price>
       </book>
    </books>

    java中的代码

    import java.io.File;
    import java.io.IOException;
    
    import javax.lang.model.element.Element;
    import javax.xml.parsers.DocumentBuilder;
    import javax.xml.parsers.DocumentBuilderFactory;
    import javax.xml.parsers.ParserConfigurationException;
    import javax.xml.soap.Node;
    
    import org.w3c.dom.Document;
    import org.w3c.dom.NodeList;
    import org.xml.sax.SAXException;
    
    public class ReadXml {
    
        public static void main(String[] args) {
            
            try {
                //java读取xml的方法。DOM方式
                DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance();
                DocumentBuilder builder=factory.newDocumentBuilder();
                Document document=builder.parse(new File("NewFile.xml"));
                //获取文档根元素
                org.w3c.dom.Element root=document.getDocumentElement();
                //输出根元素id的值
                System.out.println(root.getAttribute("id"));
                //获取子级元素
                NodeList list= root.getElementsByTagName("book");
                //循环输出xml标签元素的值
                for (int i = 0; i < list.getLength(); i++) {
                    org.w3c.dom.Element book=(org.w3c.dom.Element)list.item(i);
                    System.out.println("--------");
                    System.out.println("id="+book.getAttribute("id")); 
                    //获取所有子节点
                    NodeList list1=book.getChildNodes();
                    //循环输出子节点中的元素内容
                    for (int j = 0; j < list1.getLength(); j++) {
                        org.w3c.dom.Node child=(org.w3c.dom.Node)list1.item(j); 
                        //去掉空白节点
                        if(child instanceof org.w3c.dom.Element){
                        System.out.println(child.getNodeName()+"标签内容是"+child.getTextContent());
                        }
                    }
                    
                    //读取子节点中元素的值,都要重新创建一个element对象
                    /*org.w3c.dom.Element name=(org.w3c.dom.Element) book.getElementsByTagName("name").item(0);
                    System.out.println("name="+name.getTextContent());*/
                }        
            } 
            catch (ParserConfigurationException e)
            {    
                e.printStackTrace();
            } catch (SAXException e) {
                
                e.printStackTrace();
            } catch (IOException e) {
                
                e.printStackTrace();
            }
        }
    
    }

    运行结果

    aaa
    --------
    id=1
    name标签内容是书名1
    price标签内容是100
    --------
    id=2
    name标签内容是书名2
    price标签内容是300
  • 相关阅读:
    sprintf使用
    Android ListView保持选中项高亮
    Creational Patterns创建型模式
    C和指针终于看到指针这一章
    C++随笔001
    TCP reset
    开始看设计模式英文版了
    Excel条件求和
    linux中安装软件,查看、卸载已安装软件方法
    linux vi文本编辑器三种模式切换及常用操作
  • 原文地址:https://www.cnblogs.com/275147378abc/p/5212393.html
Copyright © 2011-2022 走看看