JXPath(1.3) - Object Graph Traversal

來源:互聯網
上載者:User

標籤:

JXPath 提供了使用 Xpath 文法操縱符合 Java 類命名規範的 JavaBeans 的工具。也支援 maps、DOM 和其他物件模型。對於深階層的 JavaBean,使用 JXPath 可以方便地訪問深層次的屬性,而免去了繁瑣的 getter/setter 操作。

 

以下面的 JavaBeans 為例。

package com.huey.jxpath;import lombok.AllArgsConstructor;import lombok.Data;import lombok.NoArgsConstructor;@Data@NoArgsConstructor@AllArgsConstructorpublic class Book {    private String title;    private Author[] authors;    private Publisher publisher;    private String isbn;    private double price;    }
Book.java
package com.huey.jxpath;import java.util.Date;import lombok.AllArgsConstructor;import lombok.Data;import lombok.NoArgsConstructor;@Data@NoArgsConstructor@AllArgsConstructorpublic class Author {    private String firstName;    private String lastName;    private char gender;    private Date birthday;    }
Author.java
package com.huey.jxpath;import java.util.Map;import lombok.AllArgsConstructor;import lombok.Data;import lombok.NoArgsConstructor;@Data@NoArgsConstructor@AllArgsConstructorpublic class Publisher {    private String name;    private String address;    private Map<String, String> contacts;    }
Publisher.java

初始化

Author[] authors;Publisher publisher;Book book;authors = new Author[] {    new Author("Eric", "Freeman", ‘F‘, new Date()),    new Author("ElElisabeth", "Freeman", ‘M‘, new Date())};Map<String, String> contacts = new HashMap<String, String>();contacts.put("tel", "010-12345678");contacts.put("fax", "010-87654321");contacts.put("email", "[email protected]");publisher = new Publisher("中國電力出版社", "北京市XX區YY路Z號", contacts);book = new Book("Head First Design Patterns", authors, publisher, "9787508353937", 98.0);

 

JavaBean Property Access

JXPathContext context = JXPathContext.newContext(book);String title = (String) context.getValue("title");Publisher publisher = (Publisher) context.getValue("publisher");

 

Lenient Mode

當提供的 xpath 無法映射到 JavaBean 的屬性時,context.getValue(xpath) 方法會拋出一個異常;而如果調用方法 context.setLenient(true),則會返回 null。

 

Nested Bean Property Access

JXPathContext context = JXPathContext.newContext(book);String pName = (String)context.getValue("publisher/name");char aGender = (Character)context.getValue("authors[firstName=‘Eric‘]/gender");

 

Collection Subscripts

JXPathContext context = JXPathContext.newContext(book);Author author = (Author) context.getValue("authors[1]");    // 集合第一個元素的下標是 1 而不是 0

 

Retrieving Multiple Results

JXPathContext context = JXPathContext.newContext(book);Iterator<?> authors = context.iterate("authors");while (authors.hasNext()) {    Author author = (Author) authors.next();    // ...}

 

Map Element Access

JXPathContext context = JXPathContext.newContext(publisher);        String tel = (String) context.getValue("contacts/tel");        String fax = (String) context.getValue("contacts[@name=‘fax‘]");

 

JXPath(1.3) - Object Graph Traversal

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.