Notice: this Wiki will be going read only early in 2024 and edits will no longer be possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.
Difference between revisions of "EclipseLink/UserGuide/MOXy/Runtime/Querying Objects by XPath"
< EclipseLink | UserGuide | MOXy | Runtime
Line 12: | Line 12: | ||
<source lang="xml"> | <source lang="xml"> | ||
− | < | + | <customer id="1141"> |
− | < | + | <first-name>Jon</first-name> |
− | + | <last-name>Smith</last-name> | |
− | + | <phone-number> | |
− | + | <area-code>515</area code> | |
− | + | <number>2726652</number> | |
− | + | </phone-number> | |
− | + | </customer> | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | </ | + | |
</source> | </source> | ||
+ | |||
+ | Your typical application code might look something like this: | ||
<source lang="java"> | <source lang="java"> | ||
Customer customer = (Customer) jaxbContext.createUnmarshaller().unmarshal(instanceDoc); | Customer customer = (Customer) jaxbContext.createUnmarshaller().unmarshal(instanceDoc); | ||
− | + | ... | |
int customerId = customer.getId(); | int customerId = customer.getId(); | ||
customer.setFirstName("Bob"); | customer.setFirstName("Bob"); | ||
customer.getPhoneNumber().setAreaCode("555"); | customer.getPhoneNumber().setAreaCode("555"); | ||
− | + | ... | |
jaxbContext.createMarshaller().marshal(customer, System.out); | jaxbContext.createMarshaller().marshal(customer, System.out); | ||
</source> | </source> | ||
− | You could use XPath to access these values: | + | You could instead use XPath to access these values: |
<source lang="java"> | <source lang="java"> | ||
Customer customer = (Customer) jaxbContext.createUnmarshaller().unmarshal(instanceDoc); | Customer customer = (Customer) jaxbContext.createUnmarshaller().unmarshal(instanceDoc); | ||
− | + | ... | |
int customerId = jaxbContext.getValueByXPath(customer, "@id", null, Integer.class); | int customerId = jaxbContext.getValueByXPath(customer, "@id", null, Integer.class); | ||
jaxbContext.setValueByXPath(customer, "first-name/text()", null, "Bob"); | jaxbContext.setValueByXPath(customer, "first-name/text()", null, "Bob"); | ||
jaxbContext.setValueByXPath(customer, "phone-number/area-code/text()", null, "555"); | jaxbContext.setValueByXPath(customer, "phone-number/area-code/text()", null, "555"); | ||
− | + | ... | |
jaxbContext.createMarshaller().marshal(customer, System.out); | jaxbContext.createMarshaller().marshal(customer, System.out); | ||
</source> | </source> |
Revision as of 14:28, 25 April 2011
EclipseLink MOXy
EclipseLink | |
Website | |
Download | |
Community | |
Mailing List • Forums • IRC • mattermost | |
Issues | |
Open • Help Wanted • Bug Day | |
Contribute | |
Browse Source |
Querying Objects by XPath
In addition to using conventional Java access methods to get and set your object's values, EclipseLink MOXy also allows you to access values using an XPath statement. There are special APIs on EclipseLink's JAXBContext to allow you to get and set values by XPath.
For example, consider the following XML document:
<customer id="1141"> <first-name>Jon</first-name> <last-name>Smith</last-name> <phone-number> <area-code>515</area code> <number>2726652</number> </phone-number> </customer>
Your typical application code might look something like this:
Customer customer = (Customer) jaxbContext.createUnmarshaller().unmarshal(instanceDoc); ... int customerId = customer.getId(); customer.setFirstName("Bob"); customer.getPhoneNumber().setAreaCode("555"); ... jaxbContext.createMarshaller().marshal(customer, System.out);
You could instead use XPath to access these values:
Customer customer = (Customer) jaxbContext.createUnmarshaller().unmarshal(instanceDoc); ... int customerId = jaxbContext.getValueByXPath(customer, "@id", null, Integer.class); jaxbContext.setValueByXPath(customer, "first-name/text()", null, "Bob"); jaxbContext.setValueByXPath(customer, "phone-number/area-code/text()", null, "555"); ... jaxbContext.createMarshaller().marshal(customer, System.out);