1

編集:問題は解決しました。ルートと子孫は異なる名前空間を持っていました。

そのため、特定の名前「include」を持つルート要素のすべての子孫を取得しようとしています。

    Element root = doc.getRootElement();
    Namespace ns = root.getNamespace();

    ElementFilter ef = new ElementFilter("include", ns);
    Iterator<Element> childrenIter = root.getDescendants(ef);

    LinkedList<String> schemas = new LinkedList<String>();

    while (childrenIter.hasNext()) {
        Element el = childrenIter.next();
        String schemaLocation = el.getAttributeValue("schemaLocation");
        schemas.push(schemaLocation);
    }

残念ながら、ループがすぐに終了する間、ツリーに「include」要素があっても、hasNext() は null を返します。私が間違っていることはありますか?getChildren() を使用して、レベルごとに深く掘り下げることもできますが、これははるかに便利です。

<wsdl:definitions ...>
   <wsdl:types ...>
      <xsd:schema ...>
         <xsd:include schemaLocation="VsbKontoInfoGet_1.xsd"/>
      </xsd:schema>
   </wsdl:types>
   ...
</wsdl:definitions>

編集:問題は解決しました。ルートと子孫は異なる名前空間を持っていました。

4

0 に答える 0