私は最初の2つのサービス作成者の名前を取得したいと思います。JavaはXMLノードを取得
私は、次のXMLの例があります。
<ServiceSchema:id>10</ServiceSchema:id>
<ServiceSchema:name>Service 10</ServiceSchema:name>
<ServiceSchema:authorInfos>
<ServiceSchema:authorInfo>
<ServiceSchema:id>1</ServiceSchema:id>
<ServiceSchema:name>Service Author 1</ServiceSchema:name>
<ServiceSchema:authorInfo>
<ServiceSchema:authorInfo>
<ServiceSchema:id>2</ServiceSchema:id>
<ServiceSchema:name>Service Author 2</ServiceSchema:name>
<ServiceSchema:authorInfo>
</ServiceSchema:authorInfos>
<ServiceSchema:requirements>
<ServiceSchema:requirement>
<ServiceSchema:id>1</ServiceSchema:id>
<ServiceSchema:name>Requirement 1</ServiceSchema:name>
<ServiceSchema:authorInfos>
<ServiceSchema:authorInfo>
<ServiceSchema:id>5</ServiceSchema:id>
<ServiceSchema:name> Requirement Author 5</ServiceSchema:name>
<ServiceSchema:authorInfo>
</ServiceSchema:authorInfos>
</ServiceSchema:requirement>
.....
私は次のコードで、すべての名前のノードを取得することができます。
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
dbf.setNamespaceAware(true);
DocumentBuilder db = dbf.newDocumentBuilder();
InputSource inputSource = new InputSource(new ByteArrayInputStream (xml.getBytes("utf-8")));
Document xmldocument = db.parse(inputSource);
NodeList nodeList = xmldocument.getElementsByTagNameNS("*", "name");
しかし、私はの名前だけを取得する方法がわかりません外部の著者。
ありがとうございます。
更新:
私は完全にやろうとしています何がある: 私は異なるノードごとに異なるXMLファイルを検索します。上のxmlファイルは例として意味しました。例えば
:
searchElementsXml = new String[]{"name", "id", "version", "description", "keywords", "authorInfos.authorInfo.name", "status"};
私は多くの値が発生する可能性がありますいくつかのフィールドを持っています。著者情報のように。
だから私のようなものが必要です:
NodeList nodes = doc.getElementsByTagName("ServiceSchema:authorInfos:authorinfo:name");
がそこに良い解決策はありますか?
です。 – MrSmith42