我面临的问题是,我在XML中有一个带有字符串的节点,代表HTML。
我需要剪切这个字符串,但是,当然,这可能会产生一个无效的HTML标记(例如,如果我总是在30个字符后剪切字符串,我很容易丢失像</ul>
等关闭元素)。
该怎么办?
这似乎非常困难,因为我没有通过谷歌找到真正的帮助。
到目前为止我的想法:使用“analyze-string”和正则表达式选择节点和内容,并将它们写成es-elements-nodes-nodes。 但是我遇到了很大的问题需要处理所有情况,尤其是嵌套节点。
有人有想法吗?
仅供参考:我的记事本:
以下是XML-doc:
<?xml version="1.0" encoding="UTF-8"?>
<html>
<data>
<![CDATA[
<h2>header</h2><p>A little article. <b>Here</b> it's already done!</p>
]]>
</data>
</html>
我想做什么:
我有一个字符串(html),只想输出特殊数量的字符(例如前25个字符)。当我在字符串上执行此操作时,我得到了这个结果:
"<h2>header</h2><p>A little article"
在下一步中,我将此字符串放在HTML输出中,但此时我得到了无效标记,因为<p>
- 标记未关闭。
所以我的第一个方法是:解析此字符串以获取每个标记的XML节点,然后遍历每个节点,编写一个xml元素(以确保最终标记有效)并复制多个字符直到达到限制,在这个例子中将是25个字符。
答案 0 :(得分:0)
如果你有一个表示HTML的XML节点,那么这应该是实体编码的,即打开和关闭括号转换为<
和>
- 这意味着你可以在任何你喜欢的地方切割它仍然有一个有效的XML文档。
答案 1 :(得分:0)
正如您提到的analyze-string,您似乎使用XSLT 2.0。这样你有两个选择,Saxon 9有一个扩展函数http://www.saxonica.com/documentation/extensions/functions/parse.xml(如果你想解析HTML,甚至还有一个http://www.saxonica.com/documentation/extensions/functions/parse-html.xml),然后有David Carlisle的纯XSLT 2.0实现您可以在样式表中导入HTML解析器http://code.google.com/p/web-xslt/source/browse/trunk/htmlparse,然后使用数据元素的内容。