我有一个架构,我使用XmlBeans将 Java 对象归为一类。我无法控制通过的数据。
一个这样的字段看起来像<Name>Barnes & Noble</Name>
。
&
在出现词法错误的字符处解析失败。有没有办法在解析 XML 文件时指定一个选项以忽略某些特殊字符?
你能提供的任何帮助都会很棒。
不,这是无效的 XML。与号必须转义为“&”。
您可以在将其解析为 XML 之前手动转义所有 & 符号,但这可能会混淆其他 XML 实体。
您可以将其解析<Name>Barnes & Noble</Name>
为 XPL,然后将其输入任何 XML 进程。XPL 就像 XML 一样,只是它允许在文本元素中使用 XML 的特殊字符。
您可以使用XmlOptionCharEscapeMap
.
从javadocs:
此类用于设置包含要转义的字符的映射。字符可以转义为十六进制、十进制或预定义实体(后一个选项仅适用于在 XML 规范中定义为预定义实体的 5 个字符)。
例如:
XmlOptionCharEscapeMap escapes = new XmlOptionCharEscapeMap(); escapes.addMapping('A', XmlOptionCharEscapeMap.HEXADECIMAL); escapes.addMapping('B', XmlOptionCharEscapeMap.DECIMAL); escapes.addMapping('>', XmlOptionCharEscapeMap.PREDEF_ENTITY); XmlOptions opts = new XmlOptions(); opts.setSaveSubstituteCharacters(escapes);