gpt4 book ai didi

java - SAX 解析器未读取部分节点内容

转载 作者:行者123 更新时间:2023-12-01 09:13:45 27 4
gpt4 key购买 nike

我有一个由 MS Excel 创建的 XML 文件,其中包含如下元素:

   <Row ss:Height="18.75">
<Cell ss:StyleID="s24"/>
<Cell ss:StyleID="s25"><Data ss:Type="String">22. Department&quot;GS &quot;NAES &quot;ABCDEF&quot;in Brucele</Data></Cell>
<Cell ss:StyleID="s24"/>
<Cell ss:StyleID="s24"/>
<Cell ss:StyleID="s24"/>
<Cell ss:StyleID="s259"/>
</Row>
<Row ss:Height="45">
<Cell ss:StyleID="s97"><Data ss:Type="String">1210.1</Data></Cell>
<Cell ss:StyleID="s98"><Data ss:Type="String">Boss of Department&quot;GS &quot;NAES &quot;ABCDEF&quot;in Brucele</Data></Cell>
<Cell ss:StyleID="s99"><Data ss:Type="String">керівник</Data></Cell>
<Cell ss:StyleID="s223"><Data ss:Type="Number">22</Data></Cell>
<Cell ss:StyleID="s100"><Data ss:Type="Number">1</Data></Cell>
<Cell ss:StyleID="s276"><Data ss:Type="String">Petrov ivan</Data></Cell>
</Row>

当函数读取第一行的第二个单元格时:

public void characters(char[] ch, int start, int length){
String str = new String(ch, start, length);
...
}

str仅包含textnode的“22.部门”这部分。

最佳答案

您应该在 characters() 中收集字符串,因为对于标记对之间的内容,可以多次调用此方法。在您的示例中,实体强制解析器多次调用characters()。注意:解析器可能会为实体调用特殊的回调。

因此,您应该为解析器中附加字符串的字符使用实例变量。如果新元素开始,您必须清除其内容。

关于java - SAX 解析器未读取部分节点内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40737102/

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