我面临的问题是我在XML中有一个字符串的节点,代表HTML。 我需要削减该字符串,但是,当然,这可能导致在invalide HTML的标记(例如,如果我切字符串总是后30个字符我很容易失去闭元件等</ul>
等)。 怎么办? 这似乎是非常困难的,因为我没有通过谷歌找到真正的帮助。XSLT:将字符串解析为XML节点集(concret:将HTML-String转换为节点集)?
我的想法至今:以“分析字符串”和正则表达式选择节点和内容,并把它们写上课XML元素节点。 但是我遇到很大的问题来处理所有情况,特别是嵌套节点。
有人有一些想法吗?
FYI:我的记事本:
- 正则表达式:抓住第一个标签
- 第一个节点的读标记名
- 认沽标记名正则表达式和搜索整个标签,还可以选择字符串的其余部分(去请稍后再试)
- 查看完整内容:更多标签?是: - >步骤1中,无: - >步骤5
- 写入标签作为节点元件
- 字符串取其余 - >步骤1
下面是XML的文档:
<?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>
-Tag不关闭。
所以我的第一种方法是:解析这个字符串以获取每个标记的XML-Nodes,然后遍历每个节点,编写一个xml元素(以确保最终标记将有效)并复制尽可能多的字符,直到达到极限,在这个例子中将是25个字符。
您可能希望在您的问题中包含您的XML文档。 – ColinE 2012-01-03 09:50:48
你对输入XML有任何控制吗?如果你没有使用CDATA标签,这可能是可能的。使用CDATA标记,HTML字符串仅被视为文本的通用字符串,并且不容易在HTML标记处进行分析。删除CDATA标签,然后您可以开始匹配标签... – 2012-01-03 10:51:43
请编辑您的问题并提供转换所需的结果。目前还不清楚你想要“删除”哪个字符串。 – 2012-01-03 12:56:39