gpt4 book ai didi

java - XMLStreamReader - 奇怪的错误

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

我有以下 XML 代码

    <class name="ContentStreamer">
<method name="sendAudio">
<criteria>medium</criteria>
</method>
<method name="sendVideo">
<criteria>weak</criteria>
</method>
</class>

我使用以下代码(使用 XMLStreamReader)对其进行迭代

if (reader.getEventType() == XMLStreamReader.START_ELEMENT) {
String elementName = reader.getName().toString();
if (elementName.equalsIgnoreCase("class")) {
// get the class name and construct a Class
classComposition = new ClassComposition();
classComposition.setName(reader.getAttributeValue(0));
System.out.println("***** Class: " + reader.getAttributeValue(0));
}
else if (elementName.equalsIgnoreCase("method")) {
MethodCriterion method = new MethodCriterion();
method.setMethodName(reader.getAttributeValue(0));
System.out.println("***** Method: " + reader.getAttributeValue(0));
// move forward and get the text from the '<criteria>' element
reader.next();
System.out.println("!!!" + reader.getName().toString());
}
else if (elementName.equalsIgnoreCase("criterion")) {
return compositions;
}
}

我在控制台上得到的输出是:

***** Class: ContentStreamer
***** Method: sendAudio
There was an error parsing the composition file
java.lang.IllegalStateException: Illegal to call getName() when event type is CHARACTERS. Valid states are START_ELEMENT, END_ELEMENT
at com.sun.org.apache.xerces.internal.impl.XMLStreamReaderImpl.getName(Unknown Source)

给我带来麻烦的代码区域是最后一个'reader.next() ' 和 ' System.out.println '.我已经替换了'reader.getName().toString() ' 与 ' reader.getElementText() '作为'<criteria> ' 元素只是一个文本元素,API 表示此方法读取“纯文本元素”的文本(引用)。我已经使用“reader.getEventType()”检查了事件类型' 并返回一个 4,对应于 'CHARACTERS'。所以在那种情况下,我尝试了'reader.getText() ' 这只会返回一个空字符串。我正在使用 Java 6。知道这里发生了什么吗?

最佳答案

<method name="sendAudio"> 之间和 <criteria>medium</criteria> ,你有一个换行符和一些空格。这些形成了一个文本节点,这就是你得到 CHARACTERS 的原因作为事件类型。

我很惊讶你在调用 getText() 时得到一个空字符串.您确定这不是只有换行符和空格字符的字符串吗?

关于java - XMLStreamReader - 奇怪的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6588669/

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