我是以下xml。
<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>
在上面的xml中,我使用java代码阅读then2price
clearanceprice
评论的then1price
,prices
,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());
}
}
。
Java代码:
then2price=-1.0,clearanceprice=-1.0,then1price=-1.0,extravaganzaprice=-1.0,wasprice=-1.0,nowprice=10.0
以上代码不打印CDATA内的值,它是打印完整的注释。
我只需要输出{{1}}。
非常感谢提前。
答案 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派生。请删除它们并致电上述方法。