我正在实现一个语法阅读器,这是从一个作业中分离出来的,我正在逐个字符读取XML文件。我的目标是采用我通过实验室作业的代码,并改进结构和设计。
我有一个继承自PushbackReader的SyntaxReader,它具有一些额外的方法,例如readAndExpect(char c),trimWhitespace()和readUntilChar(char c)。然后我有一个XMLSyntaxReader,它继承自SyntaxReader并添加了功能,如readAttribute()和readNode()(对于树中的子节点进行递归...)。
我基本上只是将工作的代码从我的实验室作业中复制并粘贴到了这个方法的适当位置。但是,当我尝试读取第一个子元素时,我得到了一个IOException: Pushback buffer overflow,我无法解决。
这是我的XML文件的开头:
我有一个继承自PushbackReader的SyntaxReader,它具有一些额外的方法,例如readAndExpect(char c),trimWhitespace()和readUntilChar(char c)。然后我有一个XMLSyntaxReader,它继承自SyntaxReader并添加了功能,如readAttribute()和readNode()(对于树中的子节点进行递归...)。
我基本上只是将工作的代码从我的实验室作业中复制并粘贴到了这个方法的适当位置。但是,当我尝试读取第一个子元素时,我得到了一个IOException: Pushback buffer overflow,我无法解决。
这是我的XML文件的开头:
<Biosfar namn="Liv">ar allt som fortplantar sig
<Rike namn="Vaxter"> etc...
我已经进行了调试,并观察到语法读取器成功地读取了子标签开头的<R
。此时,XMLSyntaxReader
确认它是一个子标签,取消读取最后两个字符(按顺序为R
和<
),并调用readNode()
解析子节点。当我尝试取消读取<
时,异常发生了。
在调试器中,我还验证了PushbackReader
的私有pos
变量确实设置为0
,但我无法弄清楚原因。我已经解析了一整行文本——为什么这些字符不再计数呢?
我想发布我的代码,但它非常冗长,而且由于相同的操作之前已经工作,我不确定我的具体实现是否相关。如果是,请指出我可以上传片段的地方,我将分享所有代码。