2016-09-20 6 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> 

, 나는 자바 코드를 사용하여 prices 주석의 then2price, clearanceprice, then1price의 값을 읽어했습니다.

댓글을 읽었지만 댓글 CDATA 개를 읽을 수 없습니다.

자바 코드 :

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

예상대로 CDATA의 데이터를 가져옵니다.

참고 : 댓글을 보려면 xml 형식이 필요합니다. 현재 나는 'rdonly'와 'rdonly derived'를 보았습니다. 그들을 제거하고 위의 방법을 호출하십시오.