我有一个架构,我使用XmlBeans来umarshall到Java对象。我无法控制通过的数据。
一个这样的字段看起来像<Name>Barnes & Noble</Name>
。
解析在字符&
处失败并出现词汇错误。有没有办法在解析XML文件时指定一个选项来忽略一些特殊字符?
你能提供的任何帮助都会很棒。
答案 0 :(得分:3)
没有。这是无效的XML。 &符号必须转换为“&amp; amp;”。
您可以在将其解析为XML之前手动转义所有&符号,但这可能会弄乱其他XML实体。
答案 1 :(得分:0)
您可以将<Name>Barnes & Noble</Name>
解析为XPL,然后将其提供给任何XML进程。 XPL is just like XML except that it allows XML's special characters in text elements
答案 2 :(得分:-1)
您可以使用XmlOptionCharEscapeMap
。
来自javadocs:
此类用于设置包含要素的地图 逃过一劫。字符可以转义为十六进制,十进制或预定义 实体(后一个选项仅适用于定义为的5个字符 XML Spec中的预定义实体。
例如:
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);