由于 json;parse 模块,我正在尝试使用 Basex107 解析 json 文件。
我的文件显示一些带有 html 字符的值,例如“文本”值中的这样:
"order": 2,
"page_id": 27,
"text": "<p><strong>Présentation générale</strong></p>\r\n<p>L’ambon également nommé <em>pulpitium</em> (estrade) est une sorte de tribune élevée d’où sont proclamés les textes saints. Il est placé dans le chœur de l’église, généralement, du côté gauche.</p>\r\n<p>Dès la fin du IV<sup>e</sup> siècle, ce type de tribune, appelé <em>analogium</em>...<em>Bernard Berthod</em></h4>"
但是在我尝试解析我的文件之前,当我在 Basex 中打开它时,我可以在输出窗口中看到一些字符(例如:
<
)已被其编码符号替换(变成<
)。
<order type="number">2</order><page__id type="number">27</page__id><text><p><strong>Présentation générale</strong></p>
<p>L’ambon également nommé <em>pulpitium</em> (estrade) est une sorte de tribune élevée d’où sont proclamés les textes saints. Il est placé dans le chœur de l’église, généralement, du côté gauche.</p>
..>
我想我必须告诉 Basex 接受 html 字符?
我尝试使用解析器选项(json 和 html),但没有任何改变......
如果有人有想法,
谢谢!
当您使用
json:parse
时,JSON 结构中的字符串...
{ "content": "<p>123</p>" }
…将被采用为转换后的 XML 中的字符串值:
<json type="object">
<content><p>123</p></content>
</json>
返回的 XML 文档字符串表示形式包含
<
和 >
的原因是字符 <
、>
作为“实体引用”返回。否则,带有 <
/>
的字符串和元素将无法再区分。
(我假设)您想要的是将 JSON 中的 XML 字符串转换为 XML:
<json type="object">
<content><p>123</p></content>
</json>
这可以通过对生成的 XML 文档执行更新来完成:
content
元素的字符串值将替换为解析后的 XML 结构:
let $xml := json:parse('{ "content": "<p>123</p>" }')
return $xml update {
for $text in json/content/text()
return replace node $text with parse-xml-fragment($text)
}
请注意,这要求字符串是格式良好的 XML(您在问题中提供的代码片段并非如此)。