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ファイルの取得を例に
解析コードは次のとおりです.
転載先:https://www.cnblogs.com/grasp/p/10114982.html
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