检查String是HTML还是XML

时间:2011-06-20 00:35:51

标签: javascript jquery html xml

有没有办法检查String中的字符串是HTML还是XML?最好使用jQuery而不是其他一些库? 为什么我需要这样做是因为我需要知道是否有可能传递XML或HTML的函数。如果它是HTML,我们采取一个动作,如果它是XML,我们采取另一个行动。

3 个答案:

答案 0 :(得分:4)

  

有没有办法检查String中的字符串是HTML还是XML?

不可靠。您可以测试一个(例如,针对DTD或XSD),如果它失败,则假设它是另一个。但是,这些测试旨在使用有效的DOCTYPE在整个文档上运行。在许多情况下,标记片段将通过多种标记语言的验证。那么呢?

我认为您需要解释为什么您需要了解其中的差异。

答案 1 :(得分:2)

规则是,如果它以<?xml version =“1.0”>开头?那么它是基于XML的。如果没有它,则不应将其视为XML,因为XML需要特定标记。

“XML文件或流由以下结构组成: 一个或多个Processing指令,最常见的是必需的<?xml version =“1.0”>

http://en.wikipedia.org/wiki/XML

答案 2 :(得分:0)

我可以想到两种方法来做到这一点。

暴力方法是拥有所有有效html元素的列表,如果它不是其中之一,那么它必须是xml。这可能是最干净的方法。

如果为html使用命名空间,则xml可能位于默认命名空间中,因此如果您在此页面上查找此行(为XML文档实现默认命名空间)({ {3}})在使用XPath评估时,您将看到默认命名空间中的任何内容都将返回null。

根据这个页面(https://developer.mozilla.org/en/Introduction_to_using_XPath_in_JavaScript),xpath不适用于HTML元素,这是从html告诉xml的另一种方法。

我没有使用过xpath,但根据这个页面,不同浏览器的实现可能会有所不同:http://www.nczonline.net/blog/2009/04/04/xpath-in-javascript-part-3/,因为Firefox可能允许xpath处理html元素。

因此,xpath可能是一个很好的解决方案,具体取决于所支持的浏览器以及您的xml是否可以使用命名空间,但由于html中支持的元素数量是有限的,因此看起来在该组中查找将是最精确的解决方案