当前位置: 首页 > 知识库问答 >
问题:

JAXB反封送XML保留CDATA

吕胤
2023-03-14

我正在尝试解封包含CDATA元素的XML。我得到的字符串仍然有CDATA“包装器”。我使用XJC从XSD创建Java类,它们在jmish.jaxb包中。我正在使用包含在Oracle(Sun)Java7 JDK中的JAXB。

<xs:element name="Product" minOccurs="0" maxOccurs="unbounded">
  <xs:complexType>
    <xs:sequence>
      <xs:element ref="Specifications" minOccurs="0" maxOccurs="1" />
      <xs:element name="Description" type="xs:string" minOccurs="1" maxOccurs="1" msdata:Ordinal="1" />
    </xs:sequence>
    <xs:attribute name="name" type="xs:string" />
    <xs:attribute name="imageFile" type="xs:string" />
  </xs:complexType>
</xs:element>
<Product name="Allure_444" imageFile="Allure_444_Ivory.jpg">
    <Description>![CDATA[444 Ivory]]</Description>
</Product>
JAXBContext jc = JAXBContext.newInstance( "jmish.jaxb" );
Unmarshaller u = jc.createUnmarshaller();
Catalog catalog = (Catalog)u.unmarshal( new FileInputStream( "bin/ProductCatalog.xml" ) );
[CDATA[444 Ivory]]
444 Ivory

CDATA包装器为什么会持续存在?在我在这个站点和其他站点上看到的每一个示例中,它们都是在解封过程中被删除的。这肯定是个简单的问题,但我就是看不出来。

共有1个答案

顾亦
2023-03-14
<Product name="Allure_444" imageFile="Allure_444_Ivory.jpg">
    <Description>![CDATA[444 Ivory]]</Description>
</Product>

这不是有效的CDATA包装。应该是这样的:

<Product name="Allure_444" imageFile="Allure_444_Ivory.jpg">
    <Description><![CDATA[444 Ivory]]></Description>
</Product>

您需要修复生成XML的内容,以提供正确的语法。

 类似资料:
  • 我正在尝试封送和取消封送映射到值对/从值对。我可以成功封送该对象,但是,我不能从XML中取消封送它。反封送结果是映射中存在的关键字,但其值为空。 下面是我要封送和取消封送的模型: 而且我还发现了一个关于这个问题的类似问题“JAXB:如何将映射编入 value ”,然而,它并没有解决解编组问题?

  • 我正在尝试使用JAXB进行封送处理。 我的输出是这样的: ...但我需要这样的输出: 如果取消对代码的注释,则会得到。没有它,我可以编译,但我不能得到所需的精确输出。 我的豆子长这样: 适配器类

  • 我正在构建一系列链接类,我希望这些类的实例能够整理成XML,这样我就可以将它们保存到一个文件中,以后再读进去。 目前我使用以下代码作为测试用例: XML输出为: 元素为空有什么原因吗?我希望它包含日期的字符串表示(即)。为了做到这一点,我需要编写一些我自己的代码吗? 的输出是:

  • 我正在使用JAXB解析器将通过http请求发送的XML转换为Java对象,同时根据XSD模式对其进行验证。问题是,当调用unmarshal()方法时,它会引发以下异常: UnMarshalException:意外元素(URI:“http://www.somedomain.com/”,local:“assign”)。所需元素为(无) 如果从根XML元素中删除名称空间,它会引发相同的异常,uri部分为

  • 我目前正在尝试将一些现有的XML解组到我手工创建的几个类中。问题是,我总是得到一个错误,告诉我,JaxB需要一个天气元素,但却找到了一个天气元素。(?) UnMarshalException:意外元素(URI:“http://www.aws.com/aws”,本地:“weather”)。需要的元素为<{}API>、<{}Location>、<{}Weather> 这就是我试图解析的XML: 我不太

  • 并设置Claas