【问题标题】:Java DOM: getElementsByTagName is returning no elements?Java DOM:getElementsByTagName 不返回任何元素?
【发布时间】:2020-04-29 05:59:42
【问题描述】:

我正在尝试解析 http://web.mta.info/status/ServiceStatusSubway.xml 处的 XML 文档,并使用以下代码提取所有 PtSituationElement 元素:

DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
Document subwayStatusDoc = builder.parse(new URL("http://web.mta.info/status/ServiceStatusSubway.xml").openStream());

NodeList situationList = subwayStatusDoc.getDocumentElement().getElementsByTagName("PtSituationElement");
System.out.println(situationList.item(0)); //prints null

我在这里做错了什么?

【问题讨论】:

    标签: java xml parsing dom


    【解决方案1】:

    PtSituationElement 标签包含子标签,因此您需要进入这些标签。仅打印 .item(0) 依赖于 toString() 方法,显然它不能很好地解释您的节点。

    所以添加这个以查看子节点中的一些数据:

        Node item = situationList.item(0);
        NodeList childNodes = item.getChildNodes();
        for (int j = 0; j < childNodes.getLength(); j++) {
            System.out.println(childNodes.item(j).getTextContent());
        }
    

    (我不确定您要如何处理 xml 结构中的数据,但此示例显示了如何继续您的工作。)

    另外,我注意到 LongDescription 标签包含的 HTML 不是正确的 XML(&lt;br clear=left&gt; 应该是 &lt;br clear=left&gt; 等)。解析器可能会遇到问题。如果 HTML 被转义会更好(参见How to escape "&" in XML?)。

    【讨论】:

      猜你喜欢
      • 2010-10-10
      • 2021-11-09
      • 2019-07-06
      • 1970-01-01
      • 2019-07-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多