gpt4 book ai didi

java - 从java中的xml中提取文本

转载 作者:数据小太阳 更新时间:2023-10-29 02:36:27 25 4
gpt4 key购买 nike

我正在尝试为 android 创建一个 rss 阅读器。所以我连接到 rss ulr 并获取一些 XML 信息。这是链接 - http://www.bulgarianhistory.org/feed/如果打开它查看源代码,您会注意到有一个标签content:encoded。我怎样才能得到这个标签内的信息?我的代码只是跳过它!我正在使用 SAX。这是我的解析器类:

public class RSSParser extends DefaultHandler {
private final static String TAG_ITEM = "item";
private final static String[] xmltags = { "title", "link", "pubDate", "description", "content" };

private RSSItem currentitem = null;
private ArrayList<RSSItem> itemarray = null;
private int currentindex = -1;
private boolean isParsing = false;
private StringBuilder builder = new StringBuilder();

public RSSParser(ArrayList<RSSItem> itemarray) {
super();

this.itemarray = itemarray;
}

@Override
public void characters(char[] ch, int start, int length) throws SAXException {
super.characters(ch, start, length);

if(isParsing && -1 != currentindex && null != builder)
{
builder.append(ch,start,length);
}
}

@Override
public void startElement(String uri, String localName, String qName,Attributes attributes) throws SAXException {
super.startElement(uri, localName, qName, attributes);

if(localName.equalsIgnoreCase(TAG_ITEM))
{
currentitem = new RSSItem();
currentindex = -1;
isParsing = true;

itemarray.add(currentitem);
}
else
{
currentindex = itemIndexFromString(localName);

builder = null;

if(-1 != currentindex)
builder = new StringBuilder();
}
}

@Override
public void endElement(String uri, String localName, String qName) throws SAXException {
super.endElement(uri, localName, qName);

if(localName.equalsIgnoreCase(TAG_ITEM))
{
isParsing = false;
}
else if(currentindex != -1)
{
if(isParsing)
{
switch(currentindex)
{
case 0: currentitem.title = builder.toString(); break;
case 1: currentitem.link = builder.toString(); break;
case 2: currentitem.date = builder.toString(); break;
case 3: currentitem.description= builder.toString(); break;
case 4: currentitem.content = builder.toString(); break;
}
}
}
}

private int itemIndexFromString(String tagname){
int itemindex = -1;

for(int index= 0; index<xmltags.length; ++index)
{
if(tagname.equalsIgnoreCase(xmltags[index]))
{
itemindex = index;

break;
}
}

return itemindex;
}
}

最佳答案

我真的建议不要使用 Sax在 Android 上,因为据我所知,它在 Android 上的性能真的很慢。你应该使用 XmlPullParser 附带 Android ,因此无需添加任何外部 jars而且您还将获得显着的性能改进。我刚刚测试过 XmlPullParser将解析 <content:encoded>标记与任何其他标记一样,因此它会起作用。

关于java - 从java中的xml中提取文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13070153/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com