我有以下的HTML元素:轉換正則表達式來htmlagilitypack
<div class="wrapper">
<span class="wrapper2">
<div class="myClass">
MyString
</div>
<button>buttonText</button>
</span>
</div>
So, I need to convert that element to be
≤MyString≥ free text <br> <i> <u>..... ≤MyString≥
所以,我想通了如何從HTML做轉換到我的特殊字符,但無法弄清楚如何做轉換向後轉換爲htmlAgilityPack和XPath中的html。我完全可以用正則表達式來完成,但這不是最好的解決方案。
HTML向specialChars中:
private string transformFromHtmlToMergeCodes(string text)
{
var doc = new HtmlDocument();
doc.LoadHtml(text);
var nodes = doc.DocumentNode.SelectNodes("//div[@class='wrapper']");
foreach (var item in nodes)
{
var innerText = "≤" + item.SelectSingleNode("//div[@class='myClass']").InnerText + "≥";
var textNode = HtmlNode.CreateNode(innerText);
item.ParentNode.ReplaceChild(textNode,item);
}
return doc.DocumentNode.InnerHtml;
}
從特殊字符的HTML:
private string transformFromMergeCodesToHtml(string text)
{
var matches = Regex.Matches(text, @"\«(.*?)\»");
foreach (Match match in matches)
{
var innerText = match.Value
.Replace("≤", @"<div class=""wrapper"" contenteditable=""false"">
<span class=""wrapper2"">
<div class=""myClass"">").Replace("≥",@"</div><button type="" button"" class=""MergeCodeRemoveIcon"">×</button></span></div>");
text = text.Replace(match.Value, innerText);
}
return text;
}
所以,它的第二個功能我想修改使用htmlAgilityPack因爲這不是最有效的方法特別是如果我有重複的節點。
我試圖找到≤MyString≥
並將其轉換爲節點,但HtmlAgilityPack拋出一個錯誤,它不是一個有效的節點(這是有道理的。)任何建議?
編輯
要清楚。這是我要執行的轉換:
前:
<div class="wrapper">
<span class="wrapper2">
<div class="myClass">
MyString
</div>
<button>buttonText</button>
</span>
</div>
free text <br> <i> <u>.....
<div class="wrapper">
<span class="wrapper2">
<div class="myClass">
MyString2
</div>
<button>buttonText</button>
</span>
</div>
後:
`≤MyString≥ free text <br> <i> <u>..... ≤MyString2≥`
反之亦然
您可以爲每一步添加HTML之前和之後的內容,以便我更好地理解您之後的內容... – jessehouwing
+1,用於查找HtmlAgilityPack答案! – jessehouwing