使用Apache XML Bean编组特殊字符

时间:2010-06-04 05:45:25

标签: java xml xmlbeans

我有一个架构,我使用XmlBeans来umarshall到Java对象。我无法控制通过的数据。

一个这样的字段看起来像<Name>Barnes & Noble</Name>

解析在字符&处失败并出现词汇错误。有没有办法在解析XML文件时指定一个选项来忽略一些特殊字符?

你能提供的任何帮助都会很棒。

3 个答案:

答案 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);