通过javascript解析XHTML页面时出现问题

通过javascript解析XHTML页面时出现问题,javascript,xhtml,xpath,Javascript,Xhtml,Xpath,有一些xhtml页面,在加载到浏览器之前对该页面的源代码进行了解析,以查找一些XPath位置。然后这个页面被加载到浏览器中,我想通过JAvaScript(在某些操作中)在XPath位置插入一些已经找到的文本。问题是,在JavaScript(jQuery)中,我只能得到这个页面的innerHTML(HTMLDOM),它不同于已经解析的XHTMLDOM(XMLDOM)。如何进入XHTML页面的JavaScript XML DOM,而不是HTML DOM。 示例(页面的某些部分): 文本1 文本2

有一些xhtml页面,在加载到浏览器之前对该页面的源代码进行了解析,以查找一些XPath位置。然后这个页面被加载到浏览器中,我想通过JAvaScript(在某些操作中)在XPath位置插入一些已经找到的文本。问题是,在JavaScript(jQuery)中,我只能得到这个页面的innerHTML(HTMLDOM),它不同于已经解析的XHTMLDOM(XMLDOM)。如何进入XHTML页面的JavaScript XML DOM,而不是HTML DOM。 示例(页面的某些部分):

文本1

文本2

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

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

文本1

文本2


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

上,不要使用jQuery访问DOM。相反,在Javascript中使用XPath或查找一个库,该库允许您使用XPath查询XML节点。阅读更多关于它的信息。

将XHTML作为应用程序/XHTML+xml提供,或者构建它,使其符合要求

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


(试着正确理解语义,一个不包含任何内容的段落,后面是一些不在段落中的文本,这算什么废话?

但我也试着只使用JavaScript,但问题是,要获得页面的XML DOM。。。即使我只是在Mozzila(Firebug)中查看这个页面的DOM,我也会看到页面的HTML DOM表示,而不是源xml DOM。下面是David的答案,了解为什么只要将XPath解析为HTML,就不能使用XPath。在这种情况下,我建议使用DOM的各种方法来访问您需要的信息,而不是XPath。问题是,我无法更改页面的源,因为它是TWiki的某个模块(通过代理)。我使用TWiki页面,该页面的内容定义为content=“text/html”,但所有页面都是XHTML1.0有效的。有效性只是一致性检查的开始。如果您想使用XHTML(并且关心IE),那么您需要遵守HTML兼容性准则。如果服务没有提供符合要求的代码,那么您需要修复它,或者在传递之前自己处理它。它坏了-修好它,不要试图绕过它。
<div>
  <p>Text1</p>
  <p>Text2</p>
</div>