java字符串转换中的Xml解析
我正在通过smack api制作一个聊天应用程序。当我发送包含此字符的消息时,”, 输出结果如下所示 消息==女士 输出== 妈 " 上午 这是密码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() {
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("&#39;", "`").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 {
}
DefaultHandler=newDefaultHandler(){
@凌驾
public void startDocument()引发异常{
}
@凌驾
public void startElement(字符串uri、字符串localName、字符串qName、属性)引发SAXException{
对于(int i=0;i
通常,XML解析器会将文本元素分解为多个字符节点。从XML的角度来看,这是完全有效的。因此,您需要适当地处理这一点。
因此,问题可能来自印刷,而不是逃避
例如,我可以想象以下XML
<n>A & B</n>
A&B
制作以下事件:
n
A
”&;
”B
”n
println
每个字符“东西”,您将得到三行而不是一行。也许您的解析器有一个选项来强制执行事件“规范化”,以加入后续文本节点
(如果我没有使用所有适当的XML术语,很抱歉。我的XML术语已经有点生疏了,请随意编辑此问题并输入正确的XML术语。谢谢)