父(Parent)
子(Children)
同胞(Sibling)
先辈(Ancestor)
后代(Descendant)
路径表达式
nodename 选取此节点的所有子节点
/ 从根节点选取
// 从匹配选择的当前节点选择文档中的节点,而不考虑它们的位置
. 选取当前节点
.. 选取当前节点的父节点
@ 选取属性
谓语(Predicates)
谓语被嵌在方括号中。
/bookstore/book[1]
/bookstore/book[last()]
/bookstore/book[price<10]
通配符
* 匹配任何元素节点
@* 匹配任何属性节点
node() 匹配任何类型的节点
XPath 轴
ancestor 选取当前节点的所有先辈(父、祖父等)
ancestor-or-self 选取当前节点的所有先辈(父、祖父等)以及当前节点本身
attribute 选取当前节点的所有属性
child 选取当前节点的所有子元素。
descendant 选取当前节点的所有后代元素(子、孙等)。
descendant-or-self 选取当前节点的所有后代元素(子、孙等)以及当前节点本身。
following 选取文档中当前节点的结束标签之后的所有节点。
namespace 选取当前节点的所有命名空间节点
parent 选取当前节点的父节点。
preceding 选取文档中当前节点的开始标签之前的所有节点。
preceding-sibling 选取当前节点之前的所有同级节点。
self 选取当前节点。
摘自:http://hi.baidu.com/dming4/blog/item/7f18d1ef1451fde5ce1b3ecf.html
@Target(value={FIELD,METHOD})
@Retention(value=RUNTIME)
public @interface XmlPath
XPath based mapping is what allows an existing object model to be mapped to an existing XML schema. The @XmlPath to Add a Grouping Element Sometimes grouping elements are added to your document to organise data. JAXB has this concept for collection properties in the form of import javax.xml.bind.annotation.*; import org.eclipse.persistence.oxm.annotations.XmlPath; @XmlRootElement @XmlAccessorType(XmlAccessType.FIELD) public class Customer { @XmlPath("contact-info/billing-address") private Address billingAddress; @XmlPath("contact-info/shipping-address") private Address shippingAddress; }This will produce XML like: <customer> <contact-info> <billing-address> <street>1 Billing Street</street> </billing-address> <shipping-address> <street>2 Shipping Road</street> </shipping-address> </contact-info> </customer> Example 2 - Using @XmlPath to Map by Position Normally in JAXB elements with the same name must be mapped to a collection property. Using the @XmlPath extension you map non-collection properties to a repeated element by index. import javax.xml.bind.annotation.*; import org.eclipse.persistence.oxm.annotations.XmlPath; @XmlRootElement @XmlAccessorType(XmlAccessType.FIELD) public class Customer { @XmlPath("address[1]") private Address billingAddress; @XmlPath("address[2]") private Address shippingAddress; }This will produce XML like: <customer> <address> <street>1 Billing Street</street> </address> <address> <street>2 Shipping Road</street> </address> </customer> Example 3 - Using @XmlPath to Map Two Objects to the Same Node We have seen how import javax.xml.bind.annotation.*; import org.eclipse.persistence.oxm.annotations.XmlPath; @XmlRootElement @XmlAccessorType(XmlAccessType.FIELD) public class Customer { @XmlPath(".") private Address billingAddress; private Address shippingAddress; }This will produce XML like: <customer> <street>1 Billing Street</street> <shippingAddress> <street>2 Shipping Road</street> </shippingAddress> </customer>
valuepublic abstract java.lang.String value
|