【发布时间】:2020-03-08 02:02:14
【问题描述】:
强调文本我有以下 xml:
<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
<channel>
<title>Game Analysis</title>
<item>
<title>Game</title>
<description>ABC</description>
<releaseDate>Sat, 21 Feb 2012 05:18:23 GMT</releaseDate>
</item>
<item>
<title>CoD</title>
<description>XYZ</description>
<releaseDate>Sat, 21 Feb 2011 05:18:23 GMT</releaseDate>
</item>
</channel>
</rss>
我必须解析这个 xml 并获取“item”下的所有 childNode,然后检查它是否包含“releaseDate”节点。如果不是,那么我必须抛出一个异常。
我也尝试过使用 xpath,但它不起作用。
XPathFactory xPathfactory = XPathFactory.newInstance();
XPath xpath = xPathfactory.newXPath();
XPathExpression expr = xpath.compile("//channel/item");
Object result = expr.evaluate(document, XPathConstants.NODESET);
NodeList nodes = (NodeList) result;
for (int i = 0; i < nodes.getLength(); i++) {
System.out.println(nodes.item(i).getChildNodes());
}
【问题讨论】:
-
这里似乎有些混乱。 SAX 解析器不创建节点树;它们为应用程序提供一系列事件。您不能直接将 XPath 与 SAX 一起使用。您可以使用 SAX 解析器为使用 DOM、JDOM2 或 XOM 的树构建器提供输入,然后在生成的树上使用 XPath。
-
这听起来像是一个学生练习,学生练习通常要求您不仅要解决问题,还要使用一组特定的技术来解决问题。如果是这种情况,那么您需要清楚地告诉我们您对解决方案施加了哪些限制。
标签: java xml xml-parsing sax saxparser