자바 분석 XML dom4j 방식

4296 단어
DOM4J 는 dom4j. org 에서 제작 한 오픈 소스 XML 분석 패키지 입 니 다.Dom4j 는 XML, XPath, XSLT 에 사용 되 는 사용 하기 쉬 운 라 이브 러 리 입 니 다.자바 플랫폼 에 적용 되 며 자바 집합 프레임 워 크 를 사용 하고 DOM, SAX, JAXP 를 완전히 지원 합 니 다.      필요 한 jar 패키지: dom4j - 1.6.1. jar, jaxen - 1.1 - beta - 6. jar.예제: default. xml
<?xml version="1.0" encoding="UTF-8"?>

<groups>
	<stu id="001">
		<name>zero001</name>
		<email>[email protected]</email>
	</stu>
	<stu id="002">
		<name>zero002</name>
		<email>[email protected]</email>
	</stu>
</groups>
Dom4jRead.java
import java.io.File;
import java.util.Iterator;
import java.util.List;

import org.dom4j.*;
import org.dom4j.io.SAXReader;

public class Dom4jRead {
	public static void main(String[] args) throws DocumentException {
		SAXReader reader = new SAXReader();
		Document document = reader.read(new File("default.xml"));
		Element rootElement = document.getRootElement();//    

		System.out.println("   : " + rootElement.getName());

		//        
		for (Iterator it = rootElement.elementIterator(); it.hasNext();) {
			Element element = (Element) it.next();
			System.out.println(element.getName());
		}

		//      xxx       
		for (Iterator it = rootElement.element("stu").elementIterator(); it
				.hasNext();) {
			Element element = (Element) it.next();
			System.out.print(element.getName() + ": ");
			System.out.println(element.getText());
			System.out.println(element.getStringValue());
		}

		//     
		for (Iterator it = rootElement.element("stu").attributeIterator(); it
				.hasNext();) {
			Attribute attribute = (Attribute) it.next();
			System.out
					.println(attribute.getName() + "=" + attribute.getValue());
		}

		// rootElement.element("stu"),     stu
		// List list = rootElement.elements("stu");    stu
	}

}
Dom4jWrite.java
실행 결과: out. xml
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;

import org.dom4j.*;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.XMLWriter;

public class Dom4jWrite {
	public static void main(String[] args) {
		Document document = DocumentHelper.createDocument();
		Element root = document.addElement("groups");

		Element stuElement = root.addElement("stu");
		Element nameElement = stuElement.addElement("name");
		Element ageElement = stuElement.addElement("age");
		nameElement.addAttribute("id", "1").setText(" ");
		ageElement.setText("18");

		Element stu = DocumentHelper.createElement("stu");
		stu.add(DocumentHelper.createElement("name"));
		stu.add(DocumentHelper.createElement("age"));
		document.getRootElement().add(stu);

		//   
		// stu.getParent().remove(stu);

		try {
			// FileWriter out = new FileWriter("my.xml");
			// document.write(out);
			// out.flush();
			// out.close();

			//     
			OutputFormat format = OutputFormat.createPrettyPrint();
			format.setEncoding("UTF-8");

			// XMLWriter writer = new XMLWriter(new FileWriter("out.xml"),
			// format);
			XMLWriter writer = new XMLWriter(new FileOutputStream("out.xml"),
					format);

			writer.write(document);
			writer.close();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

}

      dom4j 방식 으로 xml 파일 을 읽 습 니 다. 층 을 넘 어 접근 할 수 없고 xpath 와 함께 사용 하면 층 을 넘 어 접근 할 수 있 습 니 다.
간단 한 예제:
xpath.xml
<?xml version="1.0" encoding="UTF-8"?>
<groups>
  <stu>
    <name id="1"> </name>
    <age>18</age>
  </stu>
  <stu>
    <name/>
    <age/>
  </stu>
</groups>
Dom4jXpath.xml
<?xml version="1.0" encoding="UTF-8"?>
<AAA>
	<BBB id="b1">
		<CCC>
			<DDD>d</DDD>
		</CCC>
	</BBB>
	<BBB id="b2" />
	<BBB>
		<DDD>d</DDD>
	</BBB>
	<BBB name="bbb" />
</AAA>

좋은 웹페이지 즐겨찾기