java - 从 Wordpress 提要中解析 Java 中的 XML

标签 java xml parsing

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 标记是:<content:encoded>而且我不明白如何检索这些数据?

最佳答案

标签<content:encoded>表示名称为 encoded 的元素在前缀为 content 的 XML 命名空间中. XPath 求值器可能无法解析 content它的命名空间的前缀,我认为是 http://purl.org/rss/1.0/modules/content/来自快速谷歌。

要解决它,您需要执行以下操作:

  1. 确保您的 DocumentBuilderFactory 有 setNamespaceAware( true )在构造之后调用它,否则在解析期间所有 namespace 都将被丢弃。
  2. 编写 javax.xml.namespace.NamespaceContext 的实现将前缀解析为其命名空间 ( doc )。
  3. 调用XPath#setNamespaceContext()与您的实现。

关于java - 从 Wordpress 提要中解析 Java 中的 XML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7668658/

相关文章:

java - SimpleDateFormat 始终返回 12.30 AM

适合 JavaME 语法的编译器推荐?

python - 使用 Python 在 Yandex 图像中反向搜索图像

java - 用于生成 C# 代码的 XML 语法

java - JNA 如何包装用 C++ 编写的接口(interface)

java - Java 中的类层次结构 - 什么有意义与更容易实现

java - Java中的最短路径实现

java - Android Studio使用kso​​ap库调用Argos WebService错误

java - Java 中用于获取 xml 元素的 XPath 表达式

XML解析器及其优缺点