Java SAX语法分析器换行符

Java SAX语法分析器换行符,java,saxparser,Java,Saxparser,知道我做错了什么吗 这是xml文件 <text xml:space="preserve">{{Redirect|Anarchist|the fictional character|Anarchist (comics)}} {{Redirect|Anarchists}} {{Anarchism sidebar}} {{Libertarianism sidebar}} </text> 但是我的characters函数只被调用一次。我认为它会被调用几次,然后我可以附加“ign

知道我做错了什么吗

这是xml文件

<text xml:space="preserve">{{Redirect|Anarchist|the fictional character|Anarchist (comics)}}
{{Redirect|Anarchists}}
{{Anarchism sidebar}}
{{Libertarianism sidebar}}
</text>

但是我的characters函数只被调用一次。我认为它会被调用几次,然后我可以附加

“ignorewhitespace”标志来控制XML解析器是否认为XML元素之间的空白是重要的,或者是否应该忽略它。只要没有设置ignoreWhitespace,解析器就可以将所有字符(不管是否为空格)输入characters()方法。

对于您提供的代码,
characters
函数甚至被调用一次,这让我感到惊讶。我没有看到任何调用
characters
函数的代码……您的代码甚至无法编译。请修复它,然后编辑您的问题并输入正确的代码。另外,格式设置使得代码流非常混乱,我怀疑这就是问题的原因。其他方法有startElement和endElement。当我们在startElement方法中将标志文本设置为true时,将调用characters方法。代码编译得很好。只是它读取XML文件的{重定向{无政府主义者{虚构角色{无政府主义者(漫画)}}{{重定向{无政府主义者}}而不是整个文本。通过设置特性“”,可以提示如何实现此标记。看见但这只有Xerces2支持。目前,我对SAX解析器的通用特性“IgnorableWhitespace”一无所知。我在这篇博客中读到,他提到要从IgnorableWhitespaceCharacter函数再次调用character方法。public void ignorableWhitespace(char buf[],int start,int length)抛出SAXException{characters(buf,start,length);},但它似乎不起作用。我甚至试着用println语句来检查它是否被调用,但我不认为这是真的。您认为,空格和/n的处理方式是否类似,因为我觉得新行遇到了新行\n新行是a,语法分析器将其视为空格。验证SAXParsersA时调用/使用
ignorableWhitespace
。新行\n是,解析器将其视为空白。通过验证调用/使用
ignorableWhitespace
。JSE 7 SAXParser支持功能“”,这可能会有所帮助。
public void characters (char ch[], int start, int length) throws SAXException{

    System.out.println(text);
    if (text){
        System.out.println(testData); //testData is StringBuilder
        if (testData != null){
            for (int j=start; j < (start + length); j++){
                testData.append(ch[j]);
            }
        }                           
    }
    text = false
}
public void startElement(String uri, String localname, String qName, Attributes attributes) throws SAXException {
    if (qName.equalsIgnoreCase("text")) {
        text = true;
    }
}