gpt4 book ai didi

java - JAXB 2.x 与 MOXy (Eclipselink 2.1.2) : persisting XHTML as element value

转载 作者:行者123 更新时间:2023-11-30 04:58:29 26 4
gpt4 key购买 nike

重要:已更新解决方案!

参见JAXB 2.x with MOXy (Eclipselink 2.1.2): persisting XHTML as element value

<小时/>

我想通过 JAXB 将 XHTML 存储为 XML 的节点值,例如

<p>This is a paragraph</p>

应该“按原样”存储在 XML 中:

<root>
<title>Title</title>
<content>...the above XHTML snippet of paragraph...</content>
</root>

由于我使用 MOXy 作为 JAXB Impl,因此我想尝试一下(版本 2.1.2):

@XmlCDATA
public void setContent(String content) {
this.content = content;
}

但是,内容被编码为转义代码,之后我无法将其显示为 XHTML 代码段。

首先:哪里可以下载最新版本的 MOXy?这可能是 2.1.2 中的一个错误。 Maven 存储库不知何故不再可用: http://download.eclipse.org/rt/eclipselink/maven.repo

该链接位于 http://wiki.eclipse.org/EclipseLink/Maven

谢谢

最佳答案

关于MOXy版本2.3.0的更新和解决方案:我现在已经尝试了 EclipseLink 2.3.0 版本,它可以工作!

这是我坚持的数据对象:

import org.eclipse.persistence.oxm.annotations.XmlCDATA;

@XmlAccessorType(XmlAccessType.FIELD)
@XmlRootElement(name=DialogMessage.ROOTNAME, namespace="...")
public class DialogMessage {

@XmlTransient
public static final String ROOTNAME = "dialog";

@XmlElement(name="content-html", namespace="...")
@XmlCDATA
private String contentHTML = null;

public String getContentHTML() {
return contentHTML;
}

public void setContentHTML(String contentHTML) {
this.contentHTML = contentHTML;
}

}

和 MOXy 启用配置文件:package-info.java:

@javax.xml.bind.annotation.XmlSchema( 
namespace = "...",
xmlns = {@javax.xml.bind.annotation.XmlNs(prefix = "z", namespaceURI ="...")},
elementFormDefault = javax.xml.bind.annotation.XmlNsForm.QUALIFIED)
package com.yourdomain.packagenametodataclass;

jaxb.properties:

javax.xml.bind.context.factory=org.eclipse.persistence.jaxb.JAXBContextFactory

当我将 DialogMessage 实例作为 XML 写入磁盘时,XML 如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<z:dialog xmlns:z="...">
<z:content-html><![CDATA[<p>sgd <strong>asdf</strong> asdf&#160;</p>
<p>asdf</p>]]></z:content-html>
</z:dialog>

请注意,“...”只是您拥有的任何命名空间 URI 的替换。

关于java - JAXB 2.x 与 MOXy (Eclipselink 2.1.2) : persisting XHTML as element value,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7712772/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com