在XML中看起来像这样。我想得到他的Image src值...
<description><![CDATA[<div class="images"><img src="http://www.voicetv.co.th/cache/images/8a1a6f2aeb7b0e9c1d6bb3eae314165f.jpg" /></div>]]></description>
我正在做的是
if ((theElement.getElementsByTagName("description")).getLength() > 0) {
allChildern = theElement.getElementsByTagName("description").item(0).getChildNodes();
for (int index = 0; index < allChildern.getLength(); index++) {
description += allChildern.item(index).getNodeValue();
NodeList chNodes = allChildern.item(index).getChildNodes();
for (int i = 0; i < chNodes.getLength(); i++) {
String name = chNodes.item(i).getNodeName();
if(name.equals("div")) {
String clas = allChildern.item(index).getAttributes().getNamedItem("class").getNodeValue();
if(clas.equals("images")){
String nName = allChildern.item(index).getChildNodes().item(0).getNodeName();
if(nName.equals("img")) {
String nValue = allChildern.item(index).getChildNodes().item(0).getAttributes().getNamedItem("src").getNodeValue();
}
}
}
}
}
currentStory.setDescription(description);
}
但是不起作用
答案 0 :(得分:5)
description元素包含CDATA节点。这意味着您尝试访问的<img>
“元素”实际上只是一段文本(而不是元素)。
您需要将文本解析为新的XML文档,以便通过DOM方法访问它。
答案 1 :(得分:0)
警告:这可能有点脏,如果xml可以包含包含看起来像图像标记的注释,它也可能很脆弱。
对具有cdata部分的短xml片段使用xml解析的另一种方法是使用regexp获取图像URL。这是一个例子:
String xml = "<description><![CDATA[<div class=\"images\"><img src=\"http://www.voicetv.co.th/cache/images/8a1a6f2aeb7b0e9c1d6bb3eae314165f.jpg\"/></div>]]></description>";
Matcher matcher = Pattern.compile("<img src=\"([^\"]+)").matcher(xml);
while (matcher.find()) {
System.out.println("img url: " + matcher.group(1));
}