2009-07-16 3 views
0

Существует некоторая страница xhtml, источник этой страницы был проанализирован перед загрузкой в ​​браузере, чтобы найти некоторые позиции XPath. Затем эта страница была загружена в браузер, и я хочу, чтобы через JAvaScript (при некоторых действиях) вставлял какой-то текст в позиции XPath, которые уже были найдены. Проблема в том, что в JavaScript (jQuery) я могу получить только innerHTML (HTML DOM) этой страницы и отличается от XHTML DOM (XML DOM), которые были проанализированы. Как я могу получить в JavaScript XML DOM страницы XHTML, а не HTML DOM. Пример (некоторая часть страницы):Проблемы с разбором страницы XHTML через javascript

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

Когда я хочу найти XPath позицию Text1 будет/DIV/текст() [1], но в браузере эта часть кода будет преобразован в HTML DOM, и выглядит следующим образом:

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

и Текст1 теперь на/DIV/р [1]

ответ

0

не следует использовать JQuery, чтобы получить доступ к DOM. Вместо этого используйте XPath в Javascript или найдите библиотеку, которая позволит вам запрашивать узлы XML с помощью XPath. Узнайте больше об этом на Mozilla Developer Center's Introduction to XPath in Javascript.

+0

Но я также попытался использовать только JavaScript, но проблема является, чтобы получить XML DOM страницы ... Даже когда я просто смотрю DOM этой страницы в Mozzila (Firebug), я вижу представление HTML DOM страницы, а не source-xml dom. –

+0

Хорошо, см. Ниже ответ Дэвида, почему вы не сможете использовать XPath, пока он анализируется как HTML. В этом случае я рекомендую использовать различные методы DOM для доступа к необходимой вам информации, а не XPath. – Rahul

0

Служите XHTML в качестве приложения/xhtml + xml или создайте его так, чтобы он соответствовал the HTML compatibility guidelines.

Вы не можете сообщить браузеру, что это HTML (он служит в качестве текста/html) и ожидает, что он будет рассматривать его как XHTML.

(И попытаться получить семантику право, какая чепуха абзац, не содержащий ничего с последующим текстом, который не в пункте?)

+0

Проблема в том, что я не могу изменить источник страниц, потому что это некоторый модуль (через прокси) для TWiki. Я использую TWiki-страницы, содержимое этих страниц определяется как content = "text/html", но все страницы XHTML 1.0 действительны. http://twiki.org/ –

+0

Действительность - это только начало проверки соответствия. Если вы хотите использовать XHTML (и заботиться об IE), то вам необходимо соответствовать Руководствам по совместимости HTML. Если служба не дает вам соответствующий код, вам необходимо исправить ее или обработать самостоятельно, прежде чем передавать ее. Он сломан - исправьте его, не пытайтесь обойти его. – Quentin

Смежные вопросы