JAVAはどのようにDom 4 jを使ってxmlのDEMOケースを解析します
18827 ワード
まずDom 4 Jのjarパッケージ(パスワード:kjv 8)をインポート
xmlファイルの不動産会社のid、名前、住所を印刷します
demo01.xml
Companyクラス
DOM 4 J解析XMLファイル
XPathアプリケーションはxmlファイルを解析し、XPathアプリケーションとDom 4 jは全体であり、実際にはDom 4 jの中のツールである.まずjaxen-1.1-beta-7.jarをインポートするjarパッケージ(パスワード:kjv 8)XPathは、XMLドキュメントで情報をすばやく検索する言語です.単純にdomを用いてノードにアクセスする場合は,1層1層の処理が必要である.XPathがあれば、ノードの位置決めが簡単になり、パス式に基づいて要素、属性をすばやく取得できます.
xmlファイルの不動産会社のid、名前、住所を印刷します
demo01.xml
<companys>
<company id="1001">
<name> Aname>
<address> address>
company>
<company id="1002">
<name> Bname>
<address> address>
company>
<company id="1003">
<name> Cname>
<address> address>
company>
<company id="1006">
<name> Dname>
<address> address>
company>
companys>
Companyクラス
import java.io.Serializable;
public class Company implements Serializable{
private static final long serialVersionUID = 1L;
private Integer id;
private String name;
private String address;
public Company() {}
public Company(String name, String address) {
this.name = name;
this.address = address;
}
public Company(Integer id, String name, String address) {
this.id = id;
this.name = name;
this.address = address;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((id == null) ? 0 : id.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Company other = (Company) obj;
if (id == null) {
if (other.id != null)
return false;
} else if (!id.equals(other.id))
return false;
return true;
}
@Override
public String toString() {
return "Company [id=" + id + ", name=" + name + ", address=" + address + "]
\r";
}
}
DOM 4 J解析XMLファイル
import java.io.InputStream;
import java.util.Iterator;
import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
/**
* DOM4J XML
*/
public class XMLDemo1 {
public static void main(String[] args) throws DocumentException{
/** 1. XML XML
* XML , JAVA
* JAVA ,
* ,
*/
SAXReader reader = new SAXReader();
/**
* 2. ( ) XML
* , ,
* :
* InputStream = .class.getClassLoader().getResourceAsStream(" ");
*/
InputStream is =
XMLDemo1.class.getClassLoader().getResourceAsStream("demo01.xml");
/**
*3. SAXReader XML
* reader read() , InputStream
* : import org.dom4j.Document;
*/
Document doc = reader.read(is);
/**
* XML , xml , ,
*/
/**
* 4.
* : import org.dom4j.Element;
*/
Element root = doc.getRootElement();
//System.out.println(root.getName()); // companys
/**
* 5.
* :
* import java.util.Iterator;
* import org.dom4j.Attribute;
*/
Iterator it = root.elementIterator();
while(it.hasNext()){
Element e = it.next();//
//System.out.println(e.getName());
// : :
//String id = e.attributeValue("id"); // id XML String
// System.out.println(id);
//
Attribute idAttr = e.attribute("id");
String id = idAttr.getValue();
//System.out.println(id);
//
Element nameElement = e.element("name");
//
String name = nameElement.getText();
//System.out.println(name); // A B C D
//
Element addressElement = e.element("address");
String address = addressElement.getText();
System.out.println(address);
//
Company company = new Company();
company.setId(Integer.parseInt(id));
company.setName(name);
company.setAddress(address);
System.out.println(company);
/**
* Company [id=1001, name= A, address= ]
* Company [id=1002, name= B, address= ]
* Company [id=1003, name= C, address= ]
* Company [id=1006, name= D, address= ]
*/
}
}
}
XPathアプリケーションはxmlファイルを解析し、XPathアプリケーションとDom 4 jは全体であり、実際にはDom 4 jの中のツールである.まずjaxen-1.1-beta-7.jarをインポートするjarパッケージ(パスワード:kjv 8)XPathは、XMLドキュメントで情報をすばやく検索する言語です.単純にdomを用いてノードにアクセスする場合は,1層1層の処理が必要である.XPathがあれば、ノードの位置決めが簡単になり、パス式に基づいて要素、属性をすばやく取得できます.
XPath
/ : "/companys/company/name"
//: "//name"
..: ".."
. :
@ : "//company//@id"
import java.io.InputStream;
import java.util.List;
import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
/**
*
* DOM4J XML XPath
*
*/
public class XMLDemo2 {
public static void main(String[] args) throws DocumentException {
//1、 XML XML
SAXReader reader = new SAXReader();
//2、
InputStream is =
XMLDemo2.class.getClassLoader().getResourceAsStream("demo01.xml");
//3、 XML
Document doc = reader.read(is);
Element root = doc.getRootElement();
// "/"
List list = root.selectNodes("/companys/company/name");
System.out.println(list.size());
for (Element element : list) {
System.out.println("name :"+element.getText());
}
// "//"
List list1 = root.selectNodes("//name");
System.out.println(list1.size());
for (Element element : list1) {
System.out.println("name :"+element.getText());
/**
* name : A
name : B
name : C
name : D
*/
}
// ".." , "." ,
Element companyEle = root.element("company");
//System.out.println(companyEle.attributeValue("id"));
Element fat = (Element) companyEle.selectSingleNode("..");//Node
//Element fat = (Element) companyEle.selectSingleNode(".");//Node
System.out.println(" "+fat.getName());//companys
System.out.println(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>");
// "@"
List list2 = root.selectNodes("//company//@id");
System.out.println(list2.size()); //4
for (Attribute attribute : list2) {
System.out.print(attribute.getValue()+" ");//1001 1002 1003 1006
}
}
}