java字符串转换中的Xml解析

java字符串转换中的Xml解析,java,xml,swing,parsing,stringescapeutils,Java,Xml,Swing,Parsing,Stringescapeutils,我正在通过smack api制作一个聊天应用程序。当我发送包含此字符的消息时,”, 输出结果如下所示 消息==女士 输出== 妈 " 上午 这是密码 StringEscapeUtils.unescapeHtml((new String(ch, start, length).replace("'", "`").replace("'", "'"))); DefaultHandler handler = new DefaultHandler() {

我正在通过smack api制作一个聊天应用程序。当我发送包含此字符的消息时,”, 输出结果如下所示

消息==女士

输出==

"

上午

这是密码

  StringEscapeUtils.unescapeHtml((new String(ch, start, length).replace("'", "`").replace("'", "'")));
DefaultHandler handler = new DefaultHandler() {
                @Override
                public void startDocument() throws SAXException {
                }

                @Override
                public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {                        
                        for (int i = 0; i < attributes.getLength(); i++) {
                            if (attributes.getLocalName(i).equalsIgnoreCase("from")) {
                                from = attributes.getValue(i);
                                break;
                            }
                        }                        
                   ....
                }

                @Override
                public void characters(char ch[], int start, int length) throws SAXException {
                    String str = StringEscapeUtils.unescapeHtml((new String(ch, start, length)));                    
                    switch (elementType) {
                        case 1:
                            msg = str;
                            break;
                     ...
                        default:
                           ...
                            break;
                    }
//                  

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

                @Override
                public void endDocument() throws SAXException {
                }
这是密码

  StringEscapeUtils.unescapeHtml((new String(ch, start, length).replace("&amp;#39;", "`").replace("&apos;", "'")));
DefaultHandler handler = new DefaultHandler() {
                @Override
                public void startDocument() throws SAXException {
                }

                @Override
                public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {                        
                        for (int i = 0; i < attributes.getLength(); i++) {
                            if (attributes.getLocalName(i).equalsIgnoreCase("from")) {
                                from = attributes.getValue(i);
                                break;
                            }
                        }                        
                   ....
                }

                @Override
                public void characters(char ch[], int start, int length) throws SAXException {
                    String str = StringEscapeUtils.unescapeHtml((new String(ch, start, length)));                    
                    switch (elementType) {
                        case 1:
                            msg = str;
                            break;
                     ...
                        default:
                           ...
                            break;
                    }
//                  

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

                @Override
                public void endDocument() throws SAXException {
                }
DefaultHandler=newDefaultHandler(){
@凌驾
public void startDocument()引发异常{
}
@凌驾
public void startElement(字符串uri、字符串localName、字符串qName、属性)引发SAXException{
对于(int i=0;i
通常,XML解析器会将文本元素分解为多个字符节点。从XML的角度来看,这是完全有效的。因此,您需要适当地处理这一点。 因此,问题可能来自印刷,而不是逃避

例如,我可以想象以下XML

<n>A &amp; B</n>
A&B
制作以下事件:

  • 开始节点
    n
  • 文本节点“
    A
  • 文本节点“
    &;
  • 文本节点“
    B
  • 结束节点
    n
  • 现在,如果您看到
    println
    每个字符“东西”,您将得到三行而不是一行。也许您的解析器有一个选项来强制执行事件“规范化”,以加入后续文本节点

    (如果我没有使用所有适当的XML术语,很抱歉。我的XML术语已经有点生疏了,请随意编辑此问题并输入正确的XML术语。谢谢)