1. DOM4Jを使用して、XPath操作をサポートします
- レイヤー分析によってレイヤーなしで直接要素を取得できます
XPathの使用方法:
最初のフォーム:/aaa/bbb/ccc、1つ/層を表します。
2番目のフォーム:// bbb。これは、名前がこれと同じ場合、名前がBBBである限りそれを取得できることを意味します。 // DDD/BBB:すべてのBBBをDDD以下に入手します
3番目のフォーム:/aaa/bbb/ccc/*、以下のBBBBおよびCCCの下のすべての要素を取得します。 /*/*/*/BBBとは、最初の3層を制限することを意味します。最初の3つのレイヤーの名前に関係なく、その下のすべてのBBBを取得できます。 //*、すべての要素を取得します。
4番目のフォーム: /aaa /bbb [1]、AAA以下の最初のBBB。 /AAA/BBB [last()]は、AAA以下の最後のBBBが取得されることを意味します
5番目のフォーム://@idは、ラベルにID属性がある限り、すべてのID属性// BBB [@ID]を取得できることを意味します。BBBにID属性がある限り、すべてのID属性を取得できます。BBBをID属性で取得できます。
6番目のフォーム:// bbb [@id = 'b1']、属性IDと値b1ですべてのBBBを取得します
2。XPathを使用します
デフォルトでは、Dom4JはXPathをサポートしていません。
サポートするには、Jaxen-1.1-beta-6.jarをインポートする必要があります
2つの方法があります:selectNodes( "xpathタグ式");すべての要素を取得し、返品リスト、SelectSinglenode( "xpathタグ式"); 1つの要素を取得し、ノードを返します
1. XMLのすべての名前要素の値をクエリします
手順:ドキュメントを取得し、メソッドSelectNodes( "XPath Tag Expression")を使用します。
public static void test1()throws Exception {document document = dom4jutils.getDocument(dom4jutils.path);リスト<Node> list = document.selectnodes( "// name"); for(node node:list){//ノードは各要素の特定の値です//各要素文字列s = node.getText();の特定の値を取得します; System.out.println(s); }}2。XMLの名の値をクエリします。手順:最初にドキュメントを取得し、XPath式を作成します。
public static void test2()throws exception {document document = dom4jutils.getDocument(dom4jutils.path); node name1 = document.selectsinglenode( "// p1 [@id1 = 'aaa']/name"); // name string s1 = name1.getText()の値を取得します。 System.out.println(s1); }2。ケース分析
追加、削除、クエリ
Student.xml
<?xml version = "1.0" encoding = "utf-8"?> <tuduent> <stu> <id> 01 </dame> <name> zhangsan </name> <age> 20 </age> </stu> <stu> <stu> <stu>
Student.java
パッケージcn.qing.ov; public class student {private string id; private string name; private string age; public void setid(){public void setid(string id){this.id = id;} public string getname(){return name;} public void setName(} public void setName(string name){string name = name = name ant getage(} public string getage;} public string getage;} {this.age = age;}@override public string toString(){return "desute [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.nodem.dom4j.io.io. 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();文書= saxreader. document.getRootelement(); //ルートノードにスチュエルメントを追加するstu = root.AddElement( "stu"); // add id、name、ageelement id1 = stu.addelement( "id"); element name1 = stu.addelement( "name"); id1.settext(desutent.getid()); name1.settext(desute.getname()); age1.settext(susteant.getage()); // xml outputformat format = outputformat.createprettyprint(); xmlwriter xmlwriter = new xmlwriter(新しいxmlwriter(新しいxmlwriter = createprettyprint(); fileoutputStream( "src/student.xml")、format); xmlwriter.write(document); xmlwriter.close();} // delete、delete、delete、delete by @param id * @throws例外 *1。コレクション内の値が * 5で渡されたIDと同じかどうかを判断します。同じ場合、IDが見つかったSTUを削除 *6。1を書き留めます */public Static void delstu(string id)throws {saxreader saxreader = new saxreader(); document = document = saxreader.read( " document.selectnodes( "// id"); for(node node:list){string idv = node.getText(); //渡された値と同じかどうかを判断します(idv.equals(id)){// stu element stu stu = node.getparent(); stu.getParent(); stu.remove(stu);}} outputformat format = outputformat.createprettyprint(); xmlwriter xmlwriter = new xmlwriter(new fileoutputStream( "src/student.xml")、format); xmlwriter.write(); xmlite(); xmlite(); xmlte Static Student selstu(String ID)スロー例外{saxreader saxreader = new saxreader(); document = saxreader.read( "src/sudent.xml"); list <node> list = document.selectnodes( "// id"); sudent sustent = new sustent(); for(node node:for(for) node.getText(); if(idv.equals(id)){element stu = node.getparent(); string namev = stu.element( "name")。gettext(); string agev = stu.element( "age")。getText(); getText(); getText();テストtest.java
パッケージcn.qing.test; Import cn.qing.ov.student; Import cn.qing.service.stuservice; public static void main(string [] args)throws excust(); // testdel(); // testdel(); testsel();} // test add add add add deats void void boid foid foid decadd() Student(); stu.setId( "03"); stu.setname( "wangwu"); stu.setage( "18"); stuservice.addstu(stu);} //テスト削除メソッドpublic static void testdel()throws schrows {stuservice.delstu(stuservice.delstu( "03"); Student = stuservice.selstu( "02"); system.out.println(sustent.tostring());}}}各タイプについて、それは異なるパッケージ、プログラミングのアイデアで設定できます
要約します
上記は、JavaプログラミングにおけるXpathに関するこの記事のすべての内容です。誰にとっても役立つことを願っています。興味のある友人は、このサイトの他の関連トピックを引き続き参照できます。欠点がある場合は、それを指摘するためにメッセージを残してください。このサイトへのご支援をありがとうございました!