JAXB 解组中的忽略和符号 (Java 1.8)

Posted

技术标签:

【中文标题】JAXB 解组中的忽略和符号 (Java 1.8)【英文标题】:Ignoring & Symbol in JAXB Unmarshalling (Java 1.8) 【发布时间】:2021-12-30 10:05:13 【问题描述】:

我正在尝试解组和 XML 其架构或多或少像这样:

<xs:complexType>
    <xs:sequence>
        <xs:element name="type" type="xs:int" minOccurs="0"/>
        <xs:element name="scope" type="xs:int" minOccurs="0"/>
        <xs:element name="code" type="xs:int" minOccurs="0"/>
        <xs:element name="target" type="xs:string" minOccurs="0"/>
        <xs:element name="message" type="xs:string" minOccurs="0"/>
    </xs:sequence>
</xs:complexType>

我使用这种 XML 格式在 JMS 中传递消息。

现在我的问题是,消息标签偶尔会包含一个包含&amp;amp; 的字符串(例如:Tom & Jerry)。现在我知道 XML 更喜欢它像 &amp;amp;。但是有没有办法在解组过程中忽略&amp;amp;。目前,它正在抛出异常:

[org.xml.sax.SAXParseException; lineNumber: 163; columnNumber: 45; The reference to entity "T" must end with the ';'

对此的任何建议都会有所帮助。我可以做一些字符串操作,比如搜索&amp;amp; 并替换为&amp;amp;,一旦解组,只需将&amp;amp; 添加回来。但不是 100% 确定它会起作用。

【问题讨论】:

【参考方案1】:

XML 并不“喜欢”它像&amp;amp;,它需要它。您的数据不是格式良好的 XML,因此没有 XML 工具会接受它。无论生成什么程序,XML 都会被破坏并需要修复。

【讨论】:

很公平!谢谢(你的)信息。就是字符串操作!

以上是关于JAXB 解组中的忽略和符号 (Java 1.8)的主要内容,如果未能解决你的问题,请参考以下文章

JAXB - 忽略XML元素

JAXB 继承,解组到编组类的子类

Java/JAXB:根据属性将 Xml 解组为特定子类

JAXB 解组@XmlAnyElement

使用 Jaxb API 将 XML 解组为 Java 对象时获取 NullPointerException

使用 Xpath 表达式和 jaxb 解组 XML