Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 拆封<;br/>;在XML数据中_Java_Xml_Jaxb_Unmarshalling - Fatal编程技术网

Java 拆封<;br/>;在XML数据中

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

我试图将一些xml数据解组为java对象,其中一个元素包含

元素:

<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;
    ...
}