Here is the following code excerpted from the Spring-ws manual:
public class HolidayEndpoint {
private static final String NAMESPACE_URI = "http://mycompany.com/hr/schemas";
private XPath startDateExpression;
private XPath endDateExpression;
private XPath nameExpression;
private HumanResourceService humanResourceService;
@Autowired
public HolidayEndpoint(HumanResourceService humanResourceService) (2)
throws JDOMException {
this.humanResourceService = humanResourceService;
Namespace namespace = Namespace.getNamespace("hr", NAMESPACE_URI);
startDateExpression = XPath.newInstance("//hr:StartDate");
startDateExpression.addNamespace(namespace);
endDateExpression = XPath.newInstance("//hr:EndDate");
endDateExpression.addNamespace(namespace);
nameExpression = XPath.newInstance("concat(//hr:FirstName,' ',//hr:LastName)");
nameExpression.addNamespace(namespace);
}
My problem is that this appears to be using JDOM 1.0 and I'd like to use JDOM 2.0.
How do I convert this code from JDOM 1.0 to JDOM 2.0? Why hasn't spring updated their sample code?
Thanks!
JDOM2 is still relatively new.... but, the XPath factory in JDOM 1.x is particularly broken... and JDOM 2.x has a new api for it. The old API exists for backward compatibility/migration. Have a look at this document here for some reasoning, and the new API in JDOM 2.x.
In your case, you probably want to replace the code with something like:
XPathExpression<Element> startDateExpression =
XPathFactory.instance().compile("//hr:StartDate", Filters.element(), null, namespace);
List<Element> startdates = startDateExpression.evaluate(mydocument);
Rolf
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With