gpt4 book ai didi

java - SAX 解析和特殊字符

转载 作者:行者123 更新时间:2023-12-01 14:05:49 41 4
gpt4 key购买 nike

我想使用 SAX 解析器从 xml 文件中解析一些数据。我的xml如下:

<categories>
<cat>Pies &amp; past</cat>
<cat>Fruits</cat>
</categories>

为了解析这些数据,我扩展了 DefaultHandler。

解析后的输出为:
cat 1 = Pies

cat 2 = &

cat 3 = past

cat 4 = Fruits

为什么会发生这种情况而不是得到:
cat 1 = Pies & past

cat 2 = Fruits

最佳答案

我的猜测是您正在处理对 characters 的每个调用作为 cat 的完整文本元素。您应该对处理程序进行编码,以便连续调用 characters积累文本,您只能在 endElement 上捕获它事件:

public class CatHandler extends DefaultHandler {
private StringBuilder chars = new StringBuilder();

public void startElement(String uri, String lName, String qName, Attributes a)
{
final String name = qName == null ? lName : qName;
if ("cat".equals(name)) {
chars.setLength(0);
} else . . .
}

public void endElement(String uri, String lName, String qName) {
final String name = qName == null ? lName : qName;
if ("cat".equals(name)) {
String catName = chars.toString();
// do something with cat name
} else . . .
}

public void characters(char[] ch, int start, int length) {
chars.append(ch, start, length);
}

关于java - SAX 解析和特殊字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13336140/

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