当前位置: 代码迷 >> Java Web开发 >> String转xml,字符串中含有 < & 怎么解决
  详细解决方案

String转xml,字符串中含有 < & 怎么解决

热度:765   发布时间:2016-04-16 22:08:53.0
String转xml,字符串中含有 < & 如何解决
xml中内容是读取出来的不能确定,只能替换或者去掉某个字符

package com.clinet;

import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.DocumentHelper;

public class Test {

/**
 * @param args
 */
char [] chars = {0x0, 0x1, 0x2, 0x3, 0x4, 0x5};
private String filterText(String message) {
for (int i = 0; i < chars.length; i++) {
message = message.replaceAll(String.valueOf(chars[i]), "");
}
return message;
}
public static void main(String[] args) {
String message = "<?xml version='1.0' encoding='UTF-8'?>" +
"<SMSMSGRECEIVES>" +
"<SMSMSGRECEIVE>" +
"<MSGID>2014062940010629110513337600</MSGID>" +
"<DESTTERMID>12345</DESTTERMID>" +
"<SRCTERMID>13301639266</SRCTERMID>" +
"<MSGCONTENT>:- < & </MSGCONTENT>" +
"<RECVTIME>2014-06-29 11:05:14</RECVTIME>" +
"</SMSMSGRECEIVE>" +
"<SMSMSGRECEIVE>"+
"<MSGID>2014062940010629105000767600</MSGID>"+
    "<DESTTERMID>12345</DESTTERMID>"+
    "<SRCTERMID>13301639266</SRCTERMID>"+
    "<MSGCONTENT> ?行情波段定,不固定。</MSGCONTENT>"+
    "<RECVTIME>2014-06-29 10:50:02</RECVTIME>"+
    "</SMSMSGRECEIVE>"+
"</SMSMSGRECEIVES>";
Test t = new Test();
message = t.filterText(message);
System.out.println(message);
try {
Document document = DocumentHelper.parseText(message);
/*List<Element> elements = document.getRootElement().elements(
Constants.ELEMENT_NAME_SMSMSGRECEIVE);*/

} catch (DocumentException e) {
System.out.println("come on");
e.printStackTrace();
}
}
}


包含"<"运行抛错:

<?xml version='1.0' encoding='UTF-8'?><SMSMSGRECEIVES><SMSMSGRECEIVE><MSGID>2014062940010629110513337600</MSGID><DESTTERMID>12345</DESTTERMID><SRCTERMID>13301639266</SRCTERMID><MSGCONTENT>:- <  </MSGCONTENT><RECVTIME>2014-06-29 11:05:14</RECVTIME></SMSMSGRECEIVE><SMSMSGRECEIVE><MSGID>2014062940010629105000767600</MSGID><DESTTERMID>12345</DESTTERMID><SRCTERMID>13301639266</SRCTERMID><MSGCONTENT> ?行情波段定,不固定。</MSGCONTENT><RECVTIME>2014-06-29 10:50:02</RECVTIME></SMSMSGRECEIVE></SMSMSGRECEIVES>
come on
org.dom4j.DocumentException: Error on line 1 of document  : The content of elements must consist of well-formed character data or markup. Nested exception: The content of elements must consist of well-formed character data or markup.
at org.dom4j.io.SAXReader.read(SAXReader.java:350)
at org.dom4j.DocumentHelper.parseText(DocumentHelper.java:216)
at com.clinet.Test.main(Test.java:41)
Nested exception: 
org.xml.sax.SAXParseException: The content of elements must consist of well-formed character data or markup.
at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(ErrorHandlerWrapper.java:195)
at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.fatalError(ErrorHandlerWrapper.java:174)
at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:388)
at com.sun.org.apache.xerces.internal.impl.XMLScanner.reportFatalError(XMLScanner.java:1427)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.startOfMarkup(XMLDocumentFragmentScannerImpl.java:2606)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2704)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:647)
at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:140)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:511)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:808)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:737)
at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:119)
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1205)
at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:522)
at org.dom4j.io.SAXReader.read(SAXReader.java:334)
at org.dom4j.DocumentHelper.parseText(DocumentHelper.java:216)
at com.clinet.Test.main(Test.java:41)
Nested exception: org.xml.sax.SAXParseException: The content of elements must consist of well-formed character data or markup.
  相关解决方案