[英]html to XSLT conversion using C#
我正在嘗試使用C#將html頁面更改為xslt頁面,例如,如果我有類似的東西
<a href="#compantnameURL#">#companyname#</a>
我必須將其轉換為
<a href="{test/companynameURL}"><xsl:value-of select="test/companyname" /></a>
我有一個xsl文件,其中包含所有這些值。 我不想在這里替換這些值,因為在替換原始值之前將對其進行進一步處理。 我在這里面臨的問題是,如果值在標簽的屬性級別或標簽的值級別中,我將很難識別(替換xml構造)。
我正在嘗試使用正則表達式。 有人可以幫忙嗎?
HTML Agility Pack是必經之路。 不要忘記添加引用。 這段代碼說明了一種使用HTML Agility Pack創建XSLT的方法,這是我認為您想做的。
HtmlDocument doc = new HtmlDocument();
doc.LoadHtml(@"<html>" +
"<a href='#compantnameURL1#'>#companyname1#</a>" +
"<a href='#compantnameURL2#'>#companyname2#</a>" +
"</html>");
XmlWriterSettings settings = new XmlWriterSettings();
settings.Indent = true;
settings.IndentChars = (" ");
settings.Encoding = Encoding.UTF8;
using (XmlWriter writer = XmlWriter.Create(Console.Out, settings))
{
writer.WriteStartDocument();
writer.WriteStartElement("xsl", "stylesheet", "http://www.w3.org/1999/XSL/Transform");
writer.WriteStartElement("template", "http://www.w3.org/1999/XSL/Transform");
writer.WriteAttributeString("match", "/");
writer.WriteElementString("apply-templates", "http://www.w3.org/1999/XSL/Transform", "");
writer.WriteEndElement();
writer.WriteStartElement("template", "http://www.w3.org/1999/XSL/Transform");
writer.WriteAttributeString("match", "test/");
foreach (HtmlNode link in doc.DocumentNode.SelectNodes("//a"))
{
HtmlAttribute att = link.Attributes["href"];
writer.WriteStartElement("a");
writer.WriteStartElement("attribute", "http://www.w3.org/1999/XSL/Transform");
writer.WriteStartElement("value-of", "http://www.w3.org/1999/XSL/Transform");
writer.WriteAttributeString("select", att.Value);
writer.WriteEndElement();
writer.WriteEndElement();
writer.WriteStartElement("value-of", "http://www.w3.org/1999/XSL/Transform");
writer.WriteAttributeString("select", link.InnerText);
writer.WriteEndElement();
writer.WriteEndElement();
}
writer.WriteEndElement();
writer.WriteEndDocument();
}
我不知道有什么組件可以讓您全部使用XSLT,但是HTML Agility Pack對於任何形式的HTML操作來說都是很棒的。 解析器將提供一個完整的對象樹,其中包含明確定義的屬性,標簽,樣式等,並且可以使用XSLT輕松查詢。
另外,要獲得有關使用regex解析HTML的良好討論,請參閱此文章的第一個答案。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.