gpt4 book ai didi

java - 在 Java 中解析 XML 时从 String 中删除无效字符

转载 作者:太空宇宙 更新时间:2023-11-03 10:54:46 25 4
gpt4 key购买 nike

我一直在谷歌上搜索和阅读 SO,但没有任何效果。我对 XML 提要中的字符有疑问。我将每个标签的值保存在一个字符串中,但是当 出现时,它就停止了。我只得到标签中大约前 4-5 个词。

那么谁能帮我一个可以删除它的方法?或者可能是 XML 提要中标签中的文本对于字符串来说太长了?

谢谢!

示例代码:

    public void characters(char[] ch, int start, int length)
throws SAXException {

if (currentElement) {
currentValue = new String(ch, start, length);
currentElement = false;
}

}

public void endElement(String uri, String localName, String qName)
throws SAXException {

currentElement = false;

/** set value */
if (localName.equalsIgnoreCase("title"))
sitesList.setTitle(currentValue);
else if (localName.equalsIgnoreCase("id"))
sitesList.setId(currentValue);
else if(localName.equalsIgnoreCase("description"))
sitesList.setDescription(currentValue);
}

描述标签中的文本很长,但我只得到了 字符开始出现之前的前五个词。

最佳答案

您正在使用 SAXparser 来解析 XML 字符串。

characters() -当只读取一个 XML 元素时,可以多次调用方法。当它找到类似 <desc>blabla bla & # 39; bla bla la.</desc> 的内容时,就会发生这种情况。 .

解决方案是使用 StringBuilder 并将读取的字符附加到 characters() 中-方法,然后重置 StringBuilderendElement() -方法:

private class Handler extends DefaultHandler{

private StringBuilder temp_val;

public Handler(){
this.temp_val = new StringBuilder();
}

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

public void endElement(String uri, String localName, String qName){
System.out.println("Output: "+temp_val.toString());
// ... Do your stuff
temp_val.setLength(0); // Reset the StringBuilder
}

}

上面的代码对我有用,给定这个 XML 文件:

<?xml version="1.0" encoding="iso-8859-1" ?>
<test>This is some &#13; example-text.</test>

输出是:

Output: This is some
example-text.

关于java - 在 Java 中解析 XML 时从 String 中删除无效字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7271225/

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