【问题标题】:Parsing XML for attributes inside <!CData[----] ]in java DOM in android在android中的java DOM中解析XML以获取<!CData [----]]中的属性
【发布时间】:2017-11-12 09:16:42
【问题描述】:

我有一个这样的 xml 文件:

<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>

我有这个安卓代码:

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

我想获取 xml 文件中的第二个链接。剩余的代码可以正常工作, 如何访问 CData 并仅提取 Java 中图像的链接?

【问题讨论】:

  • CDATA 部分被设计为被视为不透明的字节序列......它们不应该被进一步解析......所以我真的没有看到使用 DOM 解析器的简单方法这样做....您是否考虑过使用正则表达式对 CDATA 内容进行模式匹配?

标签: java android xml android-studio xml-parsing


【解决方案1】:

CDATA 标记告诉 XML 解析器将内容视为纯文本。因此,如果您不想将其视为文本,而是将其视为 XML,那么您将不得不将内容提取为文本,然后将其提交给另一轮 XML 解析。

【讨论】:

    猜你喜欢
    • 2012-04-14
    • 1970-01-01
    • 2013-12-22
    • 1970-01-01
    • 2012-02-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-29
    相关资源
    最近更新 更多