【发布时间】:2013-12-02 13:44:11
【问题描述】:
我有一个 XMl,其中包含一个包含嵌套 CDATA 节的 CDATA 节。在这种情况下应该如何进行解组。这在Java中可能吗? 提前致谢。
【问题讨论】:
-
一个简单的示例文档将有助于理解您的问题。
标签: java xml cdata unmarshalling
我有一个 XMl,其中包含一个包含嵌套 CDATA 节的 CDATA 节。在这种情况下应该如何进行解组。这在Java中可能吗? 提前致谢。
【问题讨论】:
标签: java xml cdata unmarshalling
不,无法解组此类文档,因为该文档无效。例如:
<?xml version="1.0" ?>
<foo>
<bar><![CDATA[This should contain a nested cdata, which <![CDATA[Contains another CDATA]]>]]></bar>
</foo>
解析失败,因为字符序列]]> 只能用于标记CDATA 部分的结尾。简而言之,您不能嵌套 CDATA 部分。你必须想出另一种方法。
请参阅wikipedia article 和this question and answers 了解更多信息。
【讨论】:
JAXB 框架正是您所寻找的。 JAXB 代表 Java Architecture for XML Binding。
JAXB object has the capability of Marshaling and UnMarshaling.
这并不复杂。去吧:)
根据您的问题,
您可以通过具有多级类结构来做到这一点。 例如:
假设你有两个类:
class A
{
(@xmlName : CDATA1)
B obj;
}
class B
{
(@xmlName : CDATA2)
String string;
}
当您在 A 类对象的上下文中解组时。
内部 CDATA 将落在 obj 的 string 成员中。
希望这会有所帮助。
【讨论】: