【问题标题】:Problems with parsing XHTML page via javascript通过 javascript 解析 XHTML 页面的问题
【发布时间】:2010-11-11 08:29:44
【问题描述】:

有一些xhtml页面,这个页面的源在加载到浏览器之前被解析,找到一些XPath位置。然后这个页面被加载到浏览器中,我想通过 JAvaScript(在某些操作上)在 XPath 位置插入一些已经找到的文本。问题是,在 JavaScript(jQuery) 中我只能获取此页面的 innerHTML (HTML DOM),它与已解析的 XHTML DOM(XML DOM) 不同。我怎样才能进入 XHTML 页面的 JavaScript XML DOM,而不是 HTML DOM。 示例(页面的某些部分):

<div><p />
  Text1
  <p />
  Text2
</div>

当我想查找 Text1 的 XPath 位置时,它将是 /div/text()[1],但在浏览器中,这部分代码将转换为 HTML DOM,如下所示:

<div>
  <p>Text1</p>
  <p>Text2</p>
</div>

Text1 现在位于 /div/p[1]

【问题讨论】:

    标签: javascript xhtml xpath


    【解决方案1】:

    不要使用 jQuery 访问 DOM。相反,在 Javascript 中使用 XPath 或找到一个允许您使用 XPath 查询 XML 节点的库。在Mozilla Developer Center's Introduction to XPath in Javascript 上阅读更多相关信息。

    【讨论】:

    • 但我也尝试只使用 JavaScript,但问题是,要获取页面的 XML DOM...即使我只是在 Mozzila(Firebug) 中查看此页面的 DOM,我也看到了页面的 HTML DOM 表示,而不是 source-xml dom。
    • 好吧,请参阅下面大卫的回答,了解为什么只要将 XPath 解析为 HTML,您就无法使用它。在这种情况下,我建议使用 DOM 的各种方法来访问您需要的信息,而不是 XPath。
    【解决方案2】:

    将 XHTML 用作 application/xhtml+xml 或构造它以使其遵循the HTML compatibility guidelines

    您不能告诉浏览器它是 HTML(通过将其作为 text/html 提供)并期望它将其视为 XHTML。

    (并尝试使语义正确,一个什么都没有的段落后面跟着一些不在段落中的文本是什么废话?)

    【讨论】:

    • 问题是,我无法更改页面的来源,因为它是 TWiki 的一些模块(通过代理)。我使用 TWiki 页面,该页面的内容定义为 content="text/html" 但所有页面都是 XHTML 1.0 有效的。 twiki.org
    • 有效性只是一致性检查的开始。如果您想使用 XHTML(并且关心 IE),那么您需要遵守 HTML 兼容性指南。如果服务没有为您提供一致的代码,那么您需要修复它,或者在传递它之前自己处理它。它坏了 - 修复它,不要试图解决它。
    猜你喜欢
    • 1970-01-01
    • 2020-12-14
    • 1970-01-01
    • 1970-01-01
    • 2020-12-18
    • 1970-01-01
    • 1970-01-01
    • 2013-04-02
    • 2015-05-21
    相关资源
    最近更新 更多