我面臨的問題是我在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