2017-08-17 8 views
0

次のXMLソースからすべてのアクティビティとその子ノードを取得しようとしています。すべてのサブノードと値を取得するXPath

<process> 
    <name>processName</name> 
    <input>JSON</input> 
    <input>productName</input> 
    <output>JSON</output> 
    <activity> 
    <name>createDomain</name> 
    <type>bean</type> 
    <input>domainName</input> 
    <output>JSON</output> 
    </activity> 
    <mapActivity> 
    <map></map> 
    </mapActivity> 
    <activity> 
    <name>preFill</name> 
    <type>REST</type> 
    <input>JSON</input> 
    <output>JSON</output> 
    </activity> 
</process> 

だから、結果はcreateDomain, bean, domainName, JSONpreFill, REST, JSON, JSONを返します。しかし、私はこれについてどうやって行くのか不明です。

私は現在このコードを持っています。

Value: null 
Sub-value: process 

答えて

0

のJavaすべてでDOMを使用してノードである:

public static void displayActivities(Document myDoc) throws Exception { 
    XPathExpression exp = xp.compile("process/activity/*"); 
    NodeList myList = (NodeList) exp.evaluate(myDoc, XPathConstants.NODESET); 
    for (int i = 0; i < myList.getLength(); i++) { 
     Node tempNode = myList.item(i); 
     System.out.println("Value: " + tempNode.getNodeValue()); 
     if (tempNode.hasChildNodes()) { 
      for (int x = 0; x < tempNode.getChildNodes().getLength(); x++) { 
       System.out.println("Sub-value: " + myDoc.getChildNodes().item(x).getNodeName()); 
      } 
     } 
    } 
    System.out.println("------------------------------"); 
} 

この

は、次を返します。要素はノードであり、テキストはノードであり、以下同様である。あなたのXPathは完全なXML要素を返します。

  • <名>と、createdomain < /名前>
  • <タイプ> < /タイプ>
  • <入力> JSON < /入力>
  • <出力> JSON < /出力>

tempNodeは実際には要素でありテキストではないという意味です。子ノードにテキストがあります。 Node Javadocによると、ElementはgetNodeValue()が呼び出されるとnullを返します。

関連する問題