【问题标题】:Parsing XML in Java from Wordpress feed从 Wordpress 提要解析 Java 中的 XML
【发布时间】:2011-12-01 21:22:44
【问题描述】:
private void parseXml(String urlPath) throws Exception {
    URL url = new URL(urlPath);
    URLConnection connection = url.openConnection();
    DocumentBuilder db = DOCUMENT_BUILDER_FACTORY.newDocumentBuilder();

    final Document document = db.parse(connection.getInputStream());
    XPath xPathEvaluator = XPATH_FACTORY.newXPath();
    XPathExpression nameExpr = xPathEvaluator.compile("rss/channel/item/title");
    NodeList trackNameNodes = (NodeList) nameExpr.evaluate(document, XPathConstants.NODESET);
    for (int i = 0; i < trackNameNodes.getLength(); i++) {
        Node trackNameNode = trackNameNodes.item(i);
            System.out.println(String.format("Blog Entry Title: %s" , trackNameNode.getTextContent()));
        XPathExpression artistNameExpr = xPathEvaluator.compile("rss/channel/item/content:encoded");
        NodeList artistNameNodes = (NodeList) artistNameExpr.evaluate(trackNameNode, XPathConstants.NODESET);
        for (int j=0; j < artistNameNodes.getLength(); j++) {
            System.out.println(String.format(" - Artist Name: %s", artistNameNodes.item(j).getTextContent()));
        }
    }
}

我有这段代码用于从默认的wordpress xml中解析标题和内容,唯一的问题是当我尝试获取博客条目的内容时,xml标签是:&lt;content:encoded&gt;,我不明白如何检索此数据?

【问题讨论】:

  • 分享 xml 或其中的一小部分以查看结构。也可以考虑使用 jaxb。
  • wordpress.org/news/feed 我要解析的 XML 格式与此格式相同。
  • @beny23 您是否设法检索到 值数据?
  • @alex 我只编辑了帖子,没有问问题

标签: java xml parsing


【解决方案1】:

标签&lt;content:encoded&gt; 表示XML 命名空间中名称为encoded 的元素,前缀为content。 XPath 评估器可能无法将 content 前缀解析为其命名空间,我认为这是来自快速 Google 的 http://purl.org/rss/1.0/modules/content/

要解决此问题,您需要执行以下操作:

  1. 确保您的 DocumentBuilderFactory 在构造后调用了setNamespaceAware( true ),否则在解析期间将丢弃所有命名空间。
  2. 编写javax.xml.namespace.NamespaceContext 的实现,将前缀解析为其命名空间 (doc)。
  3. 致电XPath#setNamespaceContext() 告知您的实施情况。

【讨论】:

  • 对不起,我不明白第 2 部分,但感谢您的帮助
【解决方案2】:

您也可以尝试使用XStream,这是一个很好且易于使用的 XML 解析器。让您几乎无需解析已知的 XML 结构。

PS:他们的网站目前处于离线状态,使用谷歌缓存查看它=P

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-09-16
    • 2021-06-23
    • 2016-08-26
    • 2012-02-18
    • 1970-01-01
    • 1970-01-01
    • 2018-04-23
    相关资源
    最近更新 更多