1

XMLでは次のようになります。画像の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);
        }

しかし、機能していません


description要素にはCDATAノードが含まれています。これは、<img>アクセスしようとしている「要素」が実際には単なるテキストである(要素ではない)ことを意味します。

DOMメソッドを介してテキストにアクセスするには、テキストを新しいXMLドキュメントとして解析する必要があります。

4

2 に答える 2

5

description 要素には、CDATA ノードが含まれています。これは、<img>アクセスしようとしている「要素」が実際にはテキストの一部であることを意味します (要素ではありません)。

DOM メソッド経由でテキストにアクセスするには、テキストを新しい XML ドキュメントとして解析する必要があります。

于 2011-06-10T06:29:47.977 に答える
0

警告:これは少し汚れている可能性があります。また、画像タグのようなものを含むコメントをxmlに含めることができる場合は、壊れやすい可能性があります。

cdataセクションを持つ短いxmlスニペットにxml解析を使用する代わりに、正規表現を使用して画像の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));
}
于 2011-06-10T06:42:40.173 に答える