5

Spring-ws マニュアルから抜粋した次のコードを次に示します。

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);
  }

私の問題は、これが JDOM 1.0 を使用しているようで、JDOM 2.0 を使用したいということです。

このコードを JDOM 1.0 から JDOM 2.0 に変換するにはどうすればよいですか? spring がサンプル コードを更新していないのはなぜですか?

ありがとう!

4

2 に答える 2

7

JDOM2はまだ比較的新しいです....しかし、JDOM1.xのXPathファクトリは特に壊れています...そしてJDOM2.xには新しいAPIがあります。古いAPIは、下位互換性/移行のために存在します。いくつかの理由については、このドキュメントとJDOM2.xの新しいAPIをご覧ください。

あなたの場合、おそらくコードを次のようなものに置き換えたいと思うでしょう。

XPathExpression<Element> startDateExpression = 
    XPathFactory.instance().compile("//hr:StartDate", Filters.element(), null, namespace);

List<Element> startdates = startDateExpression.evaluate(mydocument);

ロルフ

于 2012-08-13T19:38:29.217 に答える