2009-06-22 18 views
7

możesz użyć xpath, aby uzyskać dostęp do elementu html?dostęp do elementu html przy użyciu xpath

musi działać w Interenet Explorer i piszę go w javascript

Próbuję uzyskać wartość określonego pola wprowadzania w określonym rzędzie, ale nie chcę mieć do iteracji wszystkie komórki, aby uzyskać prawo jeden

Każda pomoc będzie mile widziane

Emmę

Odpowiedz

4

Niestety nie można używać XPath tylko z JavaScript i HTML, ale większość ramy Javascript mają selektorów, które dają podobny do XPath funkcjonalność (np. jQuery)

edytuj: Istnieją specyficzne dla przeglądarki xpath apis, których można użyć, ale nie polecam ich używania bez abstrakcji.

1

W IE, kwerendy XPath są wykonywane przy użyciu:

xmlDoc=new ActiveXObject("Microsoft.XMLDOM"); 
xmlDoc.async=false; 
xmlDoc.load("books.xml"); 

xmlDoc.selectNodes(xpath); 

Zobacz http://www.w3schools.com/XPath/xpath_examples.asp

Jednak, to działa tylko dla XML. W przypadku zapytań XPath HTML, trzeba 3rd biblioteki strona jak http://dev.abiss.gr/sarissa/

także zobaczyć Different results selecting HTML elements with XPath in Firefox and Internet Explorer o wcześniejszej, związanych dyskusji

+0

whenerv wypróbowałbym XMLDoc = nowy ActiveXObject ("Msxml2.DOMDocument.3.0"); Otrzymuję komunikat, któremu odmówiono dostępu, mimo że podniosłem wszystkie zabezpieczenia i mogę wprowadzać jakieś pomysły? –

1

Jeżeli HTML jest XHTML conformant następnie technicznie, powinno być możliwe, aby uzyskać dostęp do elementów za pomocą XPath . Ale na ogół wygląda na to, że nie działa tak dobrze. Zwłaszcza, że ​​chcesz robić to po stronie klienta, z dowolną biblioteką XPath, która jest zainstalowana na komputerze klienta. Niezbyt przydatny i prawdopodobnie nieudany.

Jednak w HTML można określić klasy i nazwy, aby zidentyfikować pewne elementy na stronie, a JavaScript ma wiele funkcji, które mogą po prostu używać tych metod. Zobacz http://onlinetools.org/articles/unobtrusivejavascript/chapter2.html dla prostego przykładu. Zasadniczo JavaScript ma natywne wsparcie dla HTML DOM, ale nie dla XML DOM.

13

można użyć następujących czynności, aby uzyskać dostęp do elementu ze znanym XPATH

document.evaluate ("X_PATH_EXPRESSION", dokument, null, XPathResult.ANY_TYPE, null) .iterateNext()

na przykład w celu uzyskania dostępu do elementu o ID myid

document.evaluate ("// * [@ id = 'myid']", dokument, null XPathResult.ANY_ TYP zerowa) .iterateNext()

I przetestowane Firefoksa 3,6

+1

To jest sposób W3C, aby to zrobić.Kod do utworzenia zapytania i przechodzenia przez wyniki jest dość długi, więc większość programistów używa do tego opakowania. Jeśli Twoja przeglądarka nie ma XPathResult, XPathParser lub document.evaluate(), możesz użyć czystej implementacji JS, takiej jak http://mcc.id.au/xpathjs – joeytwiddle

+0

Niestety to nie działa w żadnej wersji IE. –

Powiązane problemy