1. dom4j를 사용하여 XPath 작업을 지원하십시오
- 레이어 분석을 통해 레이어없이 요소를 직접 얻을 수 있습니다.
XPath 사용 방법 :
첫 번째 형태 :/aaa/bbb/ccc, 하나/는 레이어를 나타냅니다.
두 번째 형태 : // BBB, 이름 이이 이름과 동일하면 이름이 BBB 인 한 얻을 수 있음을 의미합니다. // DDD/BBB : DDD 아래의 모든 BBB를 가져옵니다
세 번째 형태 :/aaa/bbb/ccc/*, 아래의 모든 요소를 BBBB 및 CCC 아래에서 가져옵니다. /*/*/*/bbb는 처음 세 층을 제한하는 것을 의미합니다. 처음 세 레이어의 이름이 무엇이든 그 아래의 모든 BBB를 얻을 수 있습니다. //*, 모든 요소를 얻습니다.
네 번째 형태 : /AAA /BBB [1], AAA 아래의 첫 번째 BBB. /aaa/bbb [last ()]는 AAA 아래의 마지막 BBB가 얻음을 의미합니다.
다섯 번째 형태 : //@id, 라벨에 ID 속성이있는 한 모든 ID 속성 // bbb [@ID]를 얻을 수 있으시면 BBB에 ID 속성이있는 한 모든 ID 속성을 얻을 수 있으므로 ID 속성으로 BBB를 얻을 수 있습니다.
여섯 번째 형태 : // bbb [@id = 'b1'], 속성 ID와 값 B1이있는 모든 bbbs를 얻습니다.
2. xpath를 사용하십시오
기본적으로 DOM4J는 XPath를 지원하지 않습니다.
지원하려면 Jaxen-1.1-Beta-6.jar를 가져와야합니다
SelectNodes ( "XPath Tag Expression"); 모든 요소, 리턴리스트, SelectSingLenode ( "XPath 태그 표현")를 가져옵니다. 하나의 요소, 반환 노드를 가져옵니다
1. XML의 모든 이름 요소의 값을 쿼리
단계 : 문서를 가져 와서 메소드 SelectNodes ( "XPath Tag Expression")를 사용하십시오.
public static void test1 ()은 예외를 던져 {document document = dom4jutils.getDocument (dom4jutils.path); list <dode> list = document.selectnodes ( "// name"); for (node node : list) {// 노드는 각 요소의 특정 값입니다. // 각 요소의 특정 값을 가져옵니다. System.out.println (s); }}2. XML에서 이름의 값을 쿼리하십시오. 단계 : 먼저 문서를 가져온 다음 XPath 표현식을 작성하십시오.
public static void test2 ()는 예외를 던져 {document document = dom4jutils.getDocument (dom4jutils.path); Node name1 = document.selectsingLenode ( "// p1 [@id1 = 'aaa']/name"); // 이름 문자열 값을 가져옵니다 s1 = name1.getText (); System.out.println (S1); }2. 사례 분석
추가, 삭제, 쿼리
학생 .xml
<? xml version = "1.0"alcoding = "utf-8"?> <tudent> <stu> <id> 01 </id> <name> Zhangsan </name> <ge> 20 </age> </stu> <stu> <id> 02 </id> <name> lisi </name> 19 </age> </stu> </stu>
학생. 자바
패키지 cn.qing.ov; public class student {private string id; private string name; private String age; public string getId () {return getId ()} public void setId (string id) {this.id = id;} public string getName () {return name;} public void setName (this.name = name = public setage getage ()}}} {this.age = age;}@public string tovertring () {return "return"student [id = " + id +", name = " + name +", age = " + age +"];}}stuservice.java
패키지 CN.QING.Service; import java.io.fileoutputStream; import java.io.writer; import java.util.list; import org.dom4j.document; import org.dom4j.documentexception; import org.dom4j.element; import org.dom4j.node; import org.of.oit.oug.oug.of.oit. org.dom4j.io.saxreader; import org.dom4j.io.xmlwriter; import cn.qing.ov.student; public class stuservice {// public static void addstu (학생 학생)는 예외를 던져 {saxreader saxreader = new saxReader (); document docum hodep.getRootElement (); // 루트 노드에서 stulement add stu add stu = root.addelement ( "stu"); // id, name, 이름, Ageelement id1 = stu.addelement ( "id"); 요소 이름 = stu.addelement ( "name"); 요소 age1 = stu.addeLement ( "Age"); // 값 추가 id1.settext (student.getId ()); name1.settext (whening.getName ()); age1.settext (whening1.getage ()); // xml outputformat format = outputformat.createprettyPrint (); xmlwriter xmlwriter = new xmlwriter (new xmlwriter)로 돌아갑니다. fileoutputStream ( "src/student.xml"), format); xmlwriter.write (document); xmlwriter.close ();} // 삭제, 삭제, 학생 ID/** * * @param id * @throws Exception * 1에 따라 삭제 * 2. 컬렉션의 값이 * 5에서 전달 된 ID와 동일하든. 동일하면 ID가 위치한 곳에 STU를 삭제하면 * 6을 삭제하십시오 */public static void delstu (string id)는 예외 {saxReader saxReader = new SaxReader (); document document = saxReader.Read ( "src/student.xml"); list = list = node> list = list = list> document.selectnodes ( "// id"); for (node node : list) {string idv = node.gettext (); // 전달 된 값과 동일한 지 (idv.equals (id)) {// stu 요소 stu = node.getparent ()의 노드를 가져옵니다. stu.getparent (); stu.remove (stu);}} outputformat format = outputformat.createprettyprint (); xmlwriter xmlwriter = new xmlwriter (new FileoutputStream ( "src/student.xml"), format); xmlwriter (xmlwriter.writer); 정적 학생 selstu (String id)는 예외를 {saxReader saxReader = new saxReader (); document document = saxReader.Read ( "src/student.xml"); list <node> list = document.selectnodes ( "// id"); 학생들 = new student (); (node node : list) {// node의 가치입니다. node.getText (); if (idv.equals (id)) {element stu = node.getParent (); String namev = stu.element ( "name"). getText (); String agev = stu.element ( "age"). getText (); Student.setId (idv); student.setname (studl);테스트 테스트. 자바
패키지 cn.qing.test; import cn.qing.ov.student; import cn.qing.service.stuservice; public class test {public static void main (string [] args)은 예외 {// testadd (); // testdel (); testsel ();} // student stinat void testadd () public void testadd ()를 추가합니다. Student (); stu.setid ( "03"); stu.setname ( "wangwu"); stu.setage ( "18"); stuservice.addstu (stu);} // 테스트 삭제 방법 public static void testdel () throws exception {stuservice.delstu ( "03"); 학생 = stuservice.selstu ( "02"); System.out.println (whening.toString ());}}각 유형에 대해 다른 패키지로 설정할 수 있으며 프로그래밍 아이디어로 설정할 수 있습니다.
요약
위는 Java 프로그래밍의 XPath에 관한이 기사의 모든 내용입니다. 모든 사람에게 도움이되기를 바랍니다. 관심있는 친구는이 사이트의 다른 관련 주제를 계속 참조 할 수 있습니다. 단점이 있으면 메시지를 남겨 두십시오. 이 사이트를 지원해 주신 친구들에게 감사드립니다!