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
  • 相关阅读:
    CF 335A(Banana-贪心-priority_queue是大根堆)
    Oracle shutdown immediate无法关闭数据库解决方法
    ORA-02266: unique/primary keys in table referenced by enabled foreign keys
    Linux命令学习总结:date命令
    Linux命令学习总结:pwd命令
    Linux命令学习总结:cd命令
    ORACLE表空间管理维护
    ORACLE 12C新特性——CDB与PDB
    [翻译]当分发数据库增长到25G时如何解决
    The process could not execute 'sp_repldone/sp_replcounters' on 'ServerName'
  • 原文地址:https://www.cnblogs.com/275147378abc/p/5212393.html
Copyright © 2011-2022 走看看