gpt4 book ai didi

Java SAX 解析器,存储属性

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

我正在尝试将当前文档位置存储在堆栈中,在 startElement 上推送,在 endElement 上弹出。现在我正在使用:

public void startElement(String namespaceURI, String elname,
String qName, Attributes atts) throws SAXException {
original.append(innerText);
original.append("<");
original.append(elname);
original.append(">");
docStack.push(new StackElement(elname,atts));
....

不幸的是,当它稍后尝试读取 atts 时,它给出了错误:Caused by: java.lang.IllegalStateException: 属性只能在startElement()的范围内使用。

有没有快速、可靠的方法来存储属性?此外,是否有比为每个开始标记构建新的自定义对象 StackElement 更好的方法?

最佳答案

当您将属性推送到您的自定义对象堆栈时,您正在使用实际的属性对象,根据 documentation是这样说的:

atts - 附加到元素的属性。如果没有属性,则它应该是一个空的 Attributes 对象。 startElement 返回后此对象的值未定义(强调我的)

相反,您应该在 startElement(...) 方法中捕获 Map 中的属性。这样您就可以随时随地使用它们。

关于Java SAX 解析器,存储属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6337166/

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