Java 拆封<;br/>;在XML数据中
我试图将一些xml数据解组为java对象,其中一个元素包含Java 拆封<;br/>;在XML数据中,java,xml,jaxb,unmarshalling,Java,Xml,Jaxb,Unmarshalling,我试图将一些xml数据解组为java对象,其中一个元素包含元素: <details> <para> Line Number One <br/> Line Number Two </para> </details> 一号线 第二行 在我的java对象详细信息中,我有: class Details { @XmlElement(name="para") p
元素:
<details>
<para>
Line Number One
<br/>
Line Number Two
</para>
</details>
一号线
第二行
在我的java对象详细信息中,我有:
class Details {
@XmlElement(name="para")
private List<String> paragraphs;
}
类详细信息{
@XmlElement(name=“para”)
私人清单段落;
}
问题是段落列表中唯一的元素是“第二行”。有人知道我该怎么处理吗 在这种情况下,XML格式不正确。将整个数据放在CDATA内的标记中以避免此问题。请参阅-您可以用以下内容表示混合内容(请注意,它应用于类本身的内容,而不是其元素,因此您需要一个额外的类):
类详细信息{
@XmlElement(name=“para”)
私人的,第7段;
...
}
类Para{
@混合
@XmlAnyElement
私人清单段落;
...
}
段落
属性将包含文本行的字符串
s和XML元素的元素
s。您可以使用@xmlanyement
和DomHandler
将XML文档的片段作为字符串
保存。下面是一个完整示例的链接,演示了如何执行此操作:
对于xml来说是正确的。问题是如何将其映射到当前上下文中,“
”是标记的一部分。你们都是对的,但看看提问者的
段落声明,我认为他确实打算将
作为文本。@kan-当我说格式错误时,我不是在说语法。如果在这里分析上下文,“
”是标记的数据部分,而不是标记本身包含的数据。由于“
”应被视为数据而不是标记,因此必须在CDATA中提供它。如果允许他更改结构,则最好通过标记分隔文本,而不是将标记包含在CDATA块中:第1行第2行
当前给出的两个答案都很好,但哪一个适用取决于
应该是什么。您希望它作为一段文本,还是作为一个实际的元素?在后一种情况下,遵循avtaxt的答案。在前一种情况下,它应该位于CDATA区域或使用字符实体(如Vivek所说的br/
)。我倾向于
为文本,但不幸的是,xml是由其他人生成的,因此axtavt的答案似乎是目前的答案
class Details {
@XmlElement(name="para")
private Para para;
...
}
class Para {
@XmlMixed
@XmlAnyElement
private List<Object> paragraphs;
...
}