gpt4 book ai didi

rss - 使用 Rome API 解析自定义 rss 标签

转载 作者:行者123 更新时间:2023-12-04 14:36:28 26 4
gpt4 key购买 nike

我正在尝试使用 Rome 来解析一些 rss 提要。其中一个 rss 提要说将 0.91 指定为版本并且未定义自定义 xml 命名空间,但条目中仍包含自定义元素。我可以使用 Rome 来解析没有任何定义的命名空间的自定义标签吗?

谢谢。

最佳答案

是的。您需要编写自定义解析器来执行此操作。

假设您要处理元素 customStringcustomDate。首先扩展 Item 类以存储自定义元素。

package com.example;

import com.sun.syndication.feed.rss.Item;
import java.util.Date;

public class CustomItem extends Item {

private String _customString;
private Date _customDate;

public String getCustomString() {
return _customString;
}

public void setCustomString(String customString) {
_customString = customString;
}

public Date getCustomDate() {
return _customDate;
}

public void setCustomDate(Date customDate) {
_customDate = customDate;
}

}

然后编写解析器。您还需要处理任何要解析的标准元素。

package com.example;

import com.example.CustomItem;
import com.sun.syndication.feed.rss.Item;
import com.sun.syndication.io.WireFeedParser;
import com.sun.syndication.io.impl.DateParser;
import com.sun.syndication.io.impl.RSS091UserlandParser;
import org.jdom.Element;

public class CustomParser extends RSS091UserlandParser implements WireFeedParser {

public CustomItem parseItem(Element rssRoot, Element eItem) {
CustomItem customItem = new CustomItem();

// Standard elements
Item standardItem = super.parseItem(rssRoot, eItem);
customItem.setTitle(standardItem.getTitle());
customItem.setDescription(standardItem.getDescription());

// Non-standard elements
Element e = eItem.getChild("customString", getRSSNamespace());
if (e != null) {
customItem.setCustomString(e.getText());
}

e = eItem.getChild("customDate", getRSSNamespace());
if (e != null) {
customItem.setCustomDate(DateParser.parseDate(e.getText()));
}

return customItem;
}

}

最后,您需要在 rome.properties 文件中定义您的解析器以及您要处理的任何其他类型的 feed 的解析器。

# Feed Parser implementation classes
#
WireFeedParser.classes=com.example.CustomParser

关于rss - 使用 Rome API 解析自定义 rss 标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18154194/

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