Emoji字符序列????打破了旧的XML流程
Emoji character sequence �� breaks old XML process
我有一个旧的 Java 应用程序处理来自第三方数据馈送的 XML。
数据源允许用户输入,现在突然包含 ��
() 等表情符号。我真的很惊讶这个问题花了这么长时间才出现(表情符号已经存在几年了)。
应用程序在 javax.xml.parsers.DocumentBuilder.parse(InputStream)
中爆炸:
org.xml.sax.SAXParseException; lineNumber: 105; columnNumber: 3039; Character reference "&#
at com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(DOMParser.java:257)
at com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(DocumentBuilderImpl.java:348)
at javax.xml.parsers.DocumentBuilder.parse(DocumentBuilder.java:121)
是否有我可以应用的快速本地化修复程序,而无需重新设计和重新构建整个应用程序?此外,宁愿避免正则表达式 search/replace hack,因为这会引入其他微妙的问题。
��
是编码为代理项对(两个代理项)的单个字符。 XML 中的字符引用不能表示(高或低)代理项:这些不是合法字符。字符引用应代表整个表情符号的 Unicode 代码点,👇
.
第三方向您发送无效XML,您应该拒绝它,就像您拒绝供应商的任何其他有缺陷的商品一样。
我有一个旧的 Java 应用程序处理来自第三方数据馈送的 XML。
数据源允许用户输入,现在突然包含 ��
() 等表情符号。我真的很惊讶这个问题花了这么长时间才出现(表情符号已经存在几年了)。
应用程序在 javax.xml.parsers.DocumentBuilder.parse(InputStream)
中爆炸:
org.xml.sax.SAXParseException; lineNumber: 105; columnNumber: 3039; Character reference "&#
at com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(DOMParser.java:257)
at com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(DocumentBuilderImpl.java:348)
at javax.xml.parsers.DocumentBuilder.parse(DocumentBuilder.java:121)
是否有我可以应用的快速本地化修复程序,而无需重新设计和重新构建整个应用程序?此外,宁愿避免正则表达式 search/replace hack,因为这会引入其他微妙的问题。
��
是编码为代理项对(两个代理项)的单个字符。 XML 中的字符引用不能表示(高或低)代理项:这些不是合法字符。字符引用应代表整个表情符号的 Unicode 代码点,👇
.
第三方向您发送无效XML,您应该拒绝它,就像您拒绝供应商的任何其他有缺陷的商品一样。