XSLT或LINQ到XML的优点(Advantages of XSLT or Linq to XML

2019-07-29 11:02发布

有什么好处没有在C#中使用XSLT两种或LINQ到XML的HTML解析? 这是HTML是否已被清理,因此是有效的XHTML的假设下。 这些价值最终会进入AC#对象进行验证和处理。

请让我知道,如果这是有效的,如果有其他事情要考虑。

XSLT优点:

  • 易迅速改变和部署
  • 差不多是人所共知

XSLT缺点:

  • 没有编制,所以比较慢处理
  • 字符串操作可能比较麻烦
  • 将更具挑战性,涉足C#对象在年底

LINQ到XML的优点:

  • 编译,所以它的运行速度更快
  • 可以更好的字符串操作

LINQ到XML缺点:

  • 必须编译用于更新

编辑:我要澄清,我想这些运行长期的网站可以更新它们的布局曾经一段时间。 这是的更大的原因,我想我会用的东西,并不需要编译一个。

Answer 1:

如果没有进一步的了解您的使用情况下,很难给你一般建议。

无论如何,你都有些比较苹果和桔子。 LINQ到XML(LINQ和一般)是一种查询语言,而XSLT是一种编程语言来转换XML树结构。 这是不同的概念。 只要你想从数据源中提取一定的特定的信息做任何你需要它(无论是在C#对象设置字段)做你会使用的查询语言。 的转换,相反,将您的数据的一个XML表示转换成另一种XML表示非常有用。

所以,如果你的目标是创建XML C#对象,你可能不希望使用XSLT,但任何由.NET Framework提供了处理XML数据的其他技术:旧XmlDocumentXmlReaderXPathDocumentXmlSerializerXDocument 。 每个人都有它的特殊的优势和劣势,根据输入大小,输入复杂,所需的输出等。

既然你只处理HTML,你可能也想看看在HTML敏捷性包 CodePlex上。



Answer 2:

既然你要去C#,在某些时候你的数据将要经过的LINQ(或.NET一些其他的XML代码),无论如何,你不妨把它贴在那里。

除非你有一些令人信服的理由去使用XSLT,比如你已经有很多的经验或部署强烈支持推出的文本文件,把它在一个地方。



Answer 3:

根据我的经验,XSLT更加简明易读,当你主要是处理和重新安排现有的选择XML元素。 XPath是短,易于理解,并且XML语法避免乱抛垃圾与您的代码XElementXAttribute语句。 XSLT作为XML树变换语言工作正常。

然而,它的字符串处理较差,循环并不直观,而且也子程序没有意义的概念 - 你不能改变的另一转换的输出。

所以,如果你想用实际拨弄元素和属性内容的话,就赶快达不到。 有没有问题,在同时使用,顺便说一句- XSLT正常化结构(比如,以确保所有table元素都有tbody元素)和LINQ到XML来解释它。 该优先条件匹配的可能性意味着XSLT更容易与许多similiar但不同的比赛处理时使用。 XSLT是擅长文件简化,但它只是缺少太多的基本特征是自身就足够了。

已经跃升全心全意的Linq到XML的行列,我会说,它与XSLT重叠较少,可能乍一看。 (而且我肯定乐意看到的XSLT 2.0 / 1.0的XQuery实施.NET)。

在性能方面,无论是科技股迅速。 事实上,因为它是如此难以表达缓慢的操作,你就不可能不小心触发XSLT缓慢的情况下(除非你使用递归玩....)。 相比之下,LINQ到XML功率也可以让它慢:只要使用任何重量级的.NET对象在一些内环,你已经有了一个萌芽的性能问题。

不管你做什么,不要试图用它来执行任何东西,但最简单的逻辑来滥用XSLT:它的方法比较罗嗦,比等价的C#远不如可读。 如果你需要一堆逻辑(甚至像简单的事情date > DateTime.Now ? "will be" : "has"变得臃肿庞大的黑客在XSLT),你不希望同时使用XSLT和LINQ to XML,使用Linq 。



Answer 4:

HTML敏捷包?

让我尝试。



Answer 5:

你不应该使用,如果你只是试图解析HTML。 HTML!= XML,不能同等对待。 例如转义序列“ ” 在HTML完全有效的,但不是有效的XML文档中的有效实体(不带的DTD等严重瞎搞)。 这会咬你的,相信我!

我也建议你使用HTML敏捷包 -辉煌的图书馆。



文章来源: Advantages of XSLT or Linq to XML