gpt4 book ai didi

java - 避免在 Apache Abdera 中进行字符编码

转载 作者:行者123 更新时间:2023-11-29 09:01:31 26 4
gpt4 key购买 nike

我正在编写一个简单的文章编辑器,它将与 CMS 系统一起使用,该系统提供 Atom API 来添加/编辑文章。为了与 CMS 通信,我使用了 Apache Abdera 库。但是我遇到了字符编码问题。发送到 CMS 的数据将像这样编码:

<entry>
<content xmlns:vdf="http://www.vizrt.com/types" type="xml">
<vdf:payload>
<vdf:field name="body">
<vdf:value>&lt;div xmlns="http://www.w3.org/1999/xhtml">&lt;p>Text comes here&lt;/p>&lt;/div></vdf:value>
</vdf:field>
</vdf:payload>
</content>
</entry>

但是CMS系统需要这样:

<entry>
<content xmlns:vdf="http://www.vizrt.com/types" type="xml">
<vdf:payload>
<vdf:field name="body">
<vdf:value><div xmlns="http://www.w3.org/1999/xhtml"><p>Text comes here</p></div></vdf:value>
</vdf:field>
</vdf:payload>
</content>
</entry>

换句话说,没有字符转义。有谁知道如何使用 Apache Abdera 实现这一点?

最佳答案

我并不完全熟悉 abdera 的内部结构,因此无法准确解释这里发生了什么,但我认为本质是如果你不想让 abdera 转义,你不能使用字符串或纯文本作为值东西。相反,您必须使用具有 abdera 类型 XHtmlElement

这样的事情对我有用:

String body = "<p>Text comes here</p>"

//put the text into an XHtml-Element (more specificly an instance of Div)
//I "misuse" a Content object here, because Content offers type=XHtml. Maybe there are better ways.
Element el = abdera.getFactory().newContent(Content.Type.XHTML).setValue(body).getValueElement();

//now create your empty <vdf:value/> node.
QName valueQName = new QName("http://your-vdf-namespace", "value", "vdf");
ExtensibleElement bodyValue = new ExtensibleElementWrapper(abdera.getFactory(),valueQName);

//now attach the Div to that empty node. Not sure what's happening here internally, but this worked for me :)
bodyValue.addExtension(el);

现在,bodyValue 可以用作您的字段的值,Abdera 应该正确呈现所有内容。

关于java - 避免在 Apache Abdera 中进行字符编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17147694/

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