gpt4 book ai didi

java - 在 SAX 解析期间确定根元素

转载 作者:数据小太阳 更新时间:2023-10-29 02:27:56 26 4
gpt4 key购买 nike

我正在使用 SAX 来解析 XML 文件。假设我希望我的应用程序处理具有根元素“animalList”的 XML 文件——如果根节点是其他东西,SAX 解析器应该终止解析。

使用 DOM,您可以这样做:

...
Element rootElement = xmldoc.getDocumentElement();

if ( ! rootElement.getNodeName().equalsIgnoreCase("animalList") )
throw new Exception("File is not an animalList file.");
...

但我无法确定如何使用 SAX 执行此操作 - 我无法弄清楚如何告诉 SAX 解析器确定根元素。但是,我知道如何在任何时候停止解析(在搜索 Tom's solution 之后)。

示例 XML 文件:

<?xml version="1.0" encoding="UTF-8"?>
<animalList version="1.0">
<owner>Old Joe</owner>
<dogs>
<germanShephered>Spike</germanShephered>
<australianTerrier>Scooby</australianTerrier>
<beagle>Ginger</beagle>
</dogs>
<cats>
<devonRex>Tom</devonRex>
<maineCoon>Keta</maineCoon>
</cats>
</animalList>

谢谢。

最佳答案

虽然我上次使用 SAX 是多年前的事了,但我记不清 API,但我认为您的处理程序接收到的第一个标记是根元素。因此,您应该只创建一个 boolean 类成员,指示您是否已经检查了第一个元素:

boolean rootIsChecked = false;

然后在你的处理程序中写入:

if (!rootIsChecked) {
if (!"animalList".equals(elementName)) {
throw new IllegalArgumentException("Wrong root element");
}
rootIsChecked = true;
}
// continue parsing...

关于java - 在 SAX 解析期间确定根元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4265079/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com