2017-06-10 10 views
1
アンドロイド

のJava DOMに私が持っているこのようなxmlファイル:!解析XML <CDATA [----]]

private void ProcessXml(Document data) { 
     if(data!=null){ 
      ArrayList<FeedItem>feedItems=new ArrayList<>(); 
      Element root=data.getDocumentElement(); 
      Node channel=root.getChildNodes().item(1); 
      NodeList items=channel.getChildNodes(); 
      for(int i=0;i<items.getLength();i++) 
      { 
       Node currentchild=items.item(i); 
       if(currentchild.getNodeName().equalsIgnoreCase("item")){ 
        FeedItem item=new FeedItem(); 
        NodeList itemchilds=currentchild.getChildNodes(); 
        for(int j=0;j<itemchilds.getLength();j++) 
        { 
         Node current=itemchilds.item(j); 
         if(current.getNodeName().equalsIgnoreCase("title")){ 
          item.setTitle(current.getTextContent()); 
         }else if (current.getNodeName().equalsIgnoreCase("description")) { 
         item.setDescription(current.getTextContent()); 
         }else if (current.getNodeName().equalsIgnoreCase("pubDate")) { 
          item.setPubDate(current.getTextContent()); 
         }else if (current.getNodeName().equalsIgnoreCase("link")) { 
          item.setLink(current.getTextContent()); 
         }else if (current.getNodeName().equalsIgnoreCase("content:encoded")) { 





    //What code should I write here to get the image source/link of image. 


          } 
         } 
        } 
        feedItems.add(item); 
        } 
       } 
      } 
     } 
:私はこのアンドロイドのコードを持って

<content:encoded> 
    <![CDATA[ 
    <p>Some Data</p> 
    <p> 
    <img class="aligncenter size-large wp-image-4525" src="https://www.website.com/image1.jpg" alt="cover2" width="810" height="422" srcset="https://www.website.com/image2.jpg"/> 
    Some Data 
    </p> 
      ]]> //end of CData 
</content:encoded> 

xmlファイル内の2番目のリンクを取得したい。残りのコードは正しく動作する CDataにアクセスして、Javaのイメージのリンクのみを抽出するにはどうすればよいですか?

+0

CDATAセクションは、不透明なバイトシーケンスとして扱われるように設計されています...それらはさらに解析されることは想定されていません...そのため、DOMパーサーを使用する簡単な方法は実際にはわかりません...あなたは正規表現を使ってCDATAコンテンツのパターンマッチングを行うことを検討しましたか? –

答えて

2

CDATAタグは、コンテンツをプレーンテキストとして扱うようにXMLパーサに指示します。したがって、テキストとして扱うのではなく、XMLとして扱う場合は、コンテンツをテキストとして抽出し、XML解析の別のラウンドに提出する必要があります。