JAVAでDOM解析XMLファイルを使用

8203 ワード

JAVAでDOM解析XMLファイルを使用:
DocumentBuilderFactoryのオブジェクトDocumentBuilderFactory dbf=DocumentBuilderFactory.newInstance()を作成します.DocumentBuilderオブジェクトを作成documentBuilderオブジェクトのparserメソッドによってxmlファイルをロードして現在のプロジェクトの下ですべてのXMLファイル内のノードを取得する集合getElementsByTagName()メソッド各ノードを遍歴item(i)メソッドによってノードを取得するすべての属性集合getAttributes()メソッドノードを遍歴する属性getNodeValue()をitem()メソッド取得ノードのプロパティgetNodeName()とgetNodeValue()でプロパティ名とプロパティ値を取得getChildNodes()でサブノードの集合を取得してサブノードを巡り、サブノードのプロパティ名とプロパティ値を取得する(注意:textタイプのnodeを区別し、判断if(chilNod.item(k).getNodeType()==Node.ELEMENT_NODE)を使用する)
book.xmlファイルの取得を例に
xml version="1.0" encoding="UTF-8"?>
<books>
    <book id="001">
        <title>Harry Pottertitle>
        <author>J K. Rowlingauthor>
    book>
    <book id="002">
        <title>Learning XMLtitle>
        <author>Erik T. Rayauthor>
    book>
books>

解析コードは次のとおりです.
public class testXML {
    public static void main(String[] args) {
        //   DocumentBuilderFactory   
        DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
        try {
            //  DocumentBuilder  
            DocumentBuilder db = dbf.newDocumentBuilder();
            //  documentBuilder    parser    books。xml        
            Document document = db.parse("books.xml");
            //    book     
            NodeList booklist = document.getElementsByTagName("book");
            System.out.println("   " + booklist.getLength() + "  ");
            //     book  
            for (int i = 0; i <= booklist.getLength(); i++) {
                //  item(i)    book  
                Node book = booklist.item(i);
                //  book         
                NamedNodeMap attrs = book.getAttributes();
                System.out.println(" " + (i + 1) + "    " + attrs.getLength() + "   ");
                //  book   
                for (int j = 0; j < attrs.getLength(); j++) {
                    //  item    book     
                    Node attr = attrs.item(j);
                    //     
                    System.out.print("   :" + attr.getNodeName());
                    //     
                    System.out.println("--   " + attr.getNodeValue());
                    NodeList chilNod = book.getChildNodes();
                    System.out.println(" " + (i + 1) + "    " + chilNod.getLength() + "    ");
                    for (int k = 0; k < chilNod.getLength(); k++) {
                        Node chil = chilNod.item(k);
                        //  text   node
                        if (chilNod.item(k).getNodeType() == Node.ELEMENT_NODE) {
                            System.out.print("    :" + chil.getNodeName() + ":");
                            System.out.println("        :" + chilNod.item(k).getFirstChild().getNodeValue());
                            //System.out.println("    :"+chilNod.item(k).getTextContent());
                        }
                    }
                }
            }
        } catch (ParserConfigurationException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (SAXException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
}

 
転載先:https://www.cnblogs.com/grasp/p/10114982.html