2016-09-20 13 views
0

私は以下のXMLを持っています。上記のXMLでxml javaのコメントのCDATA値を読み取る

<add-item item-descriptor="sku" id="235957441"> 
    <set-property name="skuType"><![CDATA[NORMAL]]></set-property> 
    <set-property name="isPartOfClearancePriceList"><![CDATA[false]]></set-property> 
    <set-property name="size"><![CDATA[Single set]]></set-property> 
    <!-- rdonly <set-property name="prices"><![CDATA[then2price=-1.0,clearanceprice=-1.0,then1price=-1.0,extravaganzaprice=-1.0,wasprice=-1.0,nowprice=10.0]]></set-property> --> 
    <!-- rdonly derived <set-property name="dissectionName"><![CDATA[DUVETCOVERCOL2]]></set-property> --> 
    </add-item> 

、私は、Javaコードを使用してpricesコメントのthen1pricethen2priceclearancepriceの値を読み取るためにきました。

私はコメントを読むことができましたが、コメントのCDATAを読むことができませんでした。

Javaコード:

 NodeList nl = doc.getDocumentElement().getChildNodes(); 
     for (int i = 0; i < nl.getLength(); i++) { 
      if (nl.item(i).getNodeType() == Element.COMMENT_NODE) { 
       Comment comment = (Comment) nl.item(i); 
       // System.out.println(comment.getNodeValue()); 
       Node child = nl.item(i); 
       if(child instanceof CharacterData){ 
        CharacterData cd = (CharacterData) child; 
        System.out.println(cd.getNodeValue()); 
       } 
      } 

上記のコードはCDATA内部の値を印刷していない、それは完全なコメントを印刷しています。

出力にはthen2price=-1.0,clearanceprice=-1.0,then1price=-1.0,extravaganzaprice=-1.0,wasprice=-1.0,nowprice=10.0が必要です。

多くの方々のおかげです。

答えて

1
String xmlStr = comment.getNodeValue(); 
DocumentBuilder db = DocumentBuilderFactory.newInstance().newDocumentBuilder(); 
Document doc = db.parse(new InputSource(new StringReader(xmlStr))); 

if (doc.getFirstChild().getNodeType() == Node.ELEMENT_NODE) { 
    System.out.println(doc.getFirstChild().getTextContent()); 
} 

期待どおりにデータを取得します。

注:コメントのためにxml形式も必要です。現在私はあなたが 'rdonly'と 'rdonly derived'を持っているのを見ています。それらを削除し、上記の方法を呼び出してください。

関連する問題