Mam zmienny ciąg znaków, który zawiera poprawnie sformułowany i prawidłowy kod XML. Muszę użyć kodu JavaScript, aby przeanalizować ten kanał.
Jak mogę to zrobić za pomocą (zgodnego z przeglądarką) kodu JavaScript?
źródło
Mam zmienny ciąg znaków, który zawiera poprawnie sformułowany i prawidłowy kod XML. Muszę użyć kodu JavaScript, aby przeanalizować ten kanał.
Jak mogę to zrobić za pomocą (zgodnego z przeglądarką) kodu JavaScript?
Aktualizacja: Aby uzyskać bardziej poprawną odpowiedź, zobacz odpowiedź Tim Down .
Internet Explorer i, na przykład, przeglądarki oparte na Mozilli ujawniają różne obiekty do analizy XML, więc rozsądnie jest użyć frameworka JavaScript, takiego jak jQuery, do obsługi różnic między przeglądarkami.
Naprawdę podstawowym przykładem jest:
var xml = "<music><album>Beethoven</album></music>";
var result = $(xml).find("album").text();
Uwaga: jak wskazano w komentarzach; jQuery tak naprawdę nie wykonuje żadnej analizy XML, opiera się na metodzie DOM innerHTML i parsuje ją tak, jak każdy inny HTML, dlatego należy zachować ostrożność, używając nazw elementów HTML w pliku XML. Ale myślę, że działa całkiem dobrze w przypadku prostego „parsowania” XML, ale prawdopodobnie nie jest to sugerowane do intensywnego lub „dynamicznego” parsowania XML, w którym nie ma się z góry tego, co XML spadnie i to sprawdza, czy wszystko parsuje zgodnie z oczekiwaniami.
innerHTML
właściwość elementu, co wcale nie jest wiarygodne.jQuery()
] analizuje HTML, a nie XML”Zaktualizowana odpowiedź na rok 2017
Poniżej parsuje ciąg XML do dokumentu XML we wszystkich głównych przeglądarkach. O ile nie potrzebujesz obsługi IE <= 8 lub jakiejś niejasnej przeglądarki, możesz użyć następującej funkcji:
Jeśli potrzebujesz obsługi IE <= 8, następujące zadanie będzie działać:
Po
Document
uzyskaniu przezparseXml
, możesz użyć zwykłych metod / właściwości przejścia DOM, takich jakchildNodes
i,getElementsByTagName()
aby uzyskać żądane węzły.Przykładowe użycie:
Jeśli używasz jQuery, od wersji 1.5 możesz użyć jego wbudowanej
parseXML()
metody, która jest funkcjonalnie identyczna z powyższą funkcją.źródło
$()
do analizowania XML . Przeczytaj uważniej komentarze: po prostu nie działa w wielu sytuacjach.parseXML()
używa łańcucha. Nieufnie zmieniam odpowiedź, ponieważ nie mam teraz łatwego sposobu na przetestowanie jej.Większość przykładów w Internecie (i niektóre przedstawione powyżej) pokazują, jak załadować XML z pliku w sposób zgodny z przeglądarką. Jest to łatwe, z wyjątkiem Google Chrome, który nie obsługuje tej
document.implementation.createDocument()
metody. Podczas korzystania z Chrome, aby załadować plik XML do obiektu XmlDocument, musisz użyć wbudowanego obiektu XmlHttp, a następnie załadować plik, przekazując jego identyfikator URI.W twoim przypadku scenariusz jest inny, ponieważ chcesz załadować XML ze zmiennej łańcuchowej , a nie adresu URL. Jednak w przypadku tego wymagania Chrome działa podobnie jak Mozilla (a przynajmniej tak słyszałem) i obsługuje metodę parseFromString ().
Oto funkcja, której używam (jest to część biblioteki zgodności przeglądarki, którą obecnie tworzę):
źródło
if(window.ActiveXObject){...}
var dp; try{ dp = new DOMParser() } catch(e) { }; if(dp) { // DOMParser supported } else { // alert('you need to consider upgrading your browser\nOr pay extra money so developer can support the old versions using browser sniffing (eww)') }
.Marknote to niezły, lekki, parser JavaScript XML. Jest zorientowany obiektowo i zawiera wiele przykładów, a interfejs API jest udokumentowany. Jest dość nowy, ale jak dotąd ładnie sprawdził się w jednym z moich projektów. Jedną z rzeczy, które lubię w tym, jest to, że będzie czytać XML bezpośrednio z ciągów lub adresów URL i możesz go również użyć do konwersji XML na JSON.
Oto przykład tego, co możesz zrobić z Marknote:
źródło
Zawsze stosowałem poniższe podejście, które działa w IE i Firefox.
Przykładowy XML:
JavaScript:
źródło
innerText
zamiastgetAttribute()
Najwyraźniej jQuery zapewnia teraz jQuery.parseXML http://api.jquery.com/jQuery.parseXML/ od wersji 1.5
jQuery.parseXML( data )
Zwroty:XMLDocument
źródło
Proszę spojrzeć na XML DOM Parser ( W3Schools ). Jest to samouczek na temat analizy XML DOM. Rzeczywisty analizator składni DOM różni się w zależności od przeglądarki, ale interfejs API DOM jest znormalizowany i pozostaje taki sam (mniej więcej).
Alternatywnie użyj E4X, jeśli możesz ograniczyć się do Firefoksa. Jest stosunkowo łatwiejszy w użyciu i jest częścią JavaScript od wersji 1.6. Oto przykładowe użycie ...
źródło
Aby uzyskać więcej informacji, zapoznaj się z tym http://www.easycodingclub.com/xml-parser-in-javascript/javascript-tutorials/
źródło
Oświadczenie : Stworzyłem szybki parser xml
Utworzyłem szybki parser xml do analizowania łańcucha XML w obiekcie JS / JSON lub pośrednim obiekcie przechodzenia. Oczekuje się, że będzie kompatybilny we wszystkich przeglądarkach (jednak testowany tylko w Chrome, Firefox i IE).
Stosowanie
Uwaga : Nie używa parsera DOM, ale analizuje ciąg za pomocą RE i przekształca go w obiekt JS / JSON.
Wypróbuj online , CDN
źródło
Możesz także użyć funkcji jquery ($. ParseXML), aby manipulować łańcuchem xml
przykładowy javascript:
źródło