我需要在哪里需要序列化包含ンᅧᅭ%ンᅨ&
之类字符串的文档。序列化时抛出以下异常:
java.io.IOException: The character '' is an invalid XML character
有没有办法可以像任何解决方法那样序列化这个String?
StringWriter stringOut = new StringWriter();
DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder docBuilder = docFactory.newDocumentBuilder();
Document doc = docBuilder.newDocument();
Element rootElement = doc.createElement("company");
doc.appendChild(rootElement);
String xml = "ンᅧᅭ%ンᅨ&";
//String xml = "ンᅧᅭ%ンᅨ&";
Element junk = doc.createElement("replyToQ");
junk.appendChild(doc.createCDATASection(xml));
//junk.appendChild(doc.createTextNode(stripNonValidXMLCharacters(xml)));
rootElement.appendChild(junk);
//org.w3c.dom.Document doc = this.toDOM();
//Serialize DOM
OutputFormat format = new OutputFormat(doc,"UTF-8",true);
format.setIndenting(false);
format.setLineSeparator("");
format.setPreserveSpace(true);
format.setOmitXMLDeclaration(false);
XMLSerializer serial = new XMLSerializer( stringOut, format );
// As a DOM Serializer
serial.asDOMSerializer();
serial.serialize( doc.getDocumentElement() );
答案 0 :(得分:1)
答案是你需要使用Uuicode实体转义字符串来转义它们。
字符ン
变为ソ
。见Japanese Katakana chart
您需要预处理文件以正确转义xml字符。
您的文件现在是有效的xml,可以通过标准方法进行解析。它很可能会更大。为您的文件供应商提供编写错误的xml编写器的信息;)