gpt4 book ai didi

java - SAX 解析器字符方法不收集所有内容

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

我正在使用 SAX 解析器来解析 XML,并且工作正常。

我在 XML 中有以下标签。

<value>•CERTASS >> Certass</value>

在这里,我期望“•CERTASS >> Certass”作为输出。但下面的代码只返回 Certassvalue 标签的特殊字符有问题吗?

public void characters(char[] buffer, int start, int length) {
temp = new String(buffer, start, length);
}

最佳答案

不保证 characters()方法将只在一个元素内运行一次

如果您将内容存储在 String 中, 和 characters()方法恰好运行了两次,你只会得到第二次运行的内容。 characters 方法第二次运行时,它将覆盖您的 temp 的内容。从第一次存储的变量。

要解决此问题,请使用 StringBuilderappend() characters()中的内容然后处理endElement()中的内容.例如:

 DefaultHandler handler = new DefaultHandler() {
private StringBuilder stringBuilder;

@Override
public void startElement(String uri, String localName,String qName, Attributes attributes) throws SAXException {
stringBuilder = new StringBuilder();
}

public void characters(char[] buffer, int start, int length) {
stringBuilder.append(new String(buffer, start, length));
}

public void endElement(String uri, String localName, String qName) throws SAXException {
System.out.println(stringBuilder.toString());
}
};

解析String<value>•CERTASS >> Certass</value> ”和上面的处理程序给出了输出:

?CERTASS >> Certass

希望对您有所帮助。

关于java - SAX 解析器字符方法不收集所有内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31568899/

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