Java DOM:getElementsByTagName 不返回任何元素?



我正在尝试解析 XML 文档 http://web.mta.info/status/ServiceStatusSubway.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

我在这里做错了什么?

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标签包含不正确的XML(<br clear=left>应该<br clear=left>等(。解析器可能有问题。如果 HTML 被转义会更好(请参阅如何在 XML 中转义"&"?(。

最新更新