Eu tenho uma seqüência de caracteres variável que contém XML bem formado e válido. Preciso usar o código JavaScript para analisar este feed.
Como posso fazer isso usando o código JavaScript (compatível com o navegador)?
fonte
Eu tenho uma seqüência de caracteres variável que contém XML bem formado e válido. Preciso usar o código JavaScript para analisar este feed.
Como posso fazer isso usando o código JavaScript (compatível com o navegador)?
Atualização: para obter uma resposta mais correta, consulte a resposta de Tim Down .
O Internet Explorer e, por exemplo, os navegadores baseados no Mozilla expõem objetos diferentes para análise de XML, portanto, é aconselhável usar uma estrutura JavaScript como o jQuery para lidar com as diferenças entre navegadores.
Um exemplo realmente básico é:
var xml = "<music><album>Beethoven</album></music>";
var result = $(xml).find("album").text();
Nota: Como indicado nos comentários; O jQuery realmente não faz nenhuma análise XML, ele depende do método DOM innerHTML e o analisará como se fosse um HTML, por isso tome cuidado ao usar nomes de elementos HTML no XML. Mas acho que funciona razoavelmente bem para simples 'análise' de XML, mas provavelmente não é sugerido para análise intensiva ou 'dinâmica' de XML, onde você não antecipa qual XML será baixado e testará se tudo for analisado conforme o esperado.
innerHTML
propriedade de um elemento, o que não é de todo confiável.jQuery()
] analisa HTML, não XML"Resposta atualizada para 2017
A seguir, será analisada uma sequência XML em um documento XML em todos os principais navegadores. A menos que você precise de suporte para o IE <= 8 ou algum navegador obscuro, poderá usar a seguinte função:
Se você precisar oferecer suporte ao IE <= 8, o seguinte fará o trabalho:
Depois de obter uma
Document
viaparseXml
, você pode usar os métodos / propriedades normais de travessia do DOM, comochildNodes
egetElementsByTagName()
para obter os nós que deseja.Exemplo de uso:
Se você estiver usando o jQuery, a partir da versão 1.5, poderá usar seu
parseXML()
método interno, que é funcionalmente idêntico à função acima.fonte
$()
para análise de XML . Leia os comentários com mais cuidado: ele simplesmente não funciona em muitas situações.parseXML()
método do jQuery usa uma string. Estou um pouco desconfiado de mudar a resposta, porque não tenho como testá-la agora.A maioria dos exemplos na Web (e alguns apresentados acima) mostram como carregar um XML de um arquivo de maneira compatível com o navegador. Isso é fácil, exceto no caso do Google Chrome, que não suporta o
document.implementation.createDocument()
método. Ao usar o Chrome, para carregar um arquivo XML em um objeto XmlDocument, você precisa usar o objeto XmlHttp embutido e, em seguida, carregar o arquivo passando seu URI.No seu caso, o cenário é diferente, porque você deseja carregar o XML de uma variável de sequência , não de um URL. No entanto, para esse requisito, o Chrome funciona exatamente como o Mozilla (ou pelo menos ouvi dizer) e suporta o método parseFromString ().
Aqui está uma função que eu uso (faz parte da biblioteca de compatibilidade do navegador que estou construindo):
fonte
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)') }
.O Marknote é um bom analisador XML de JavaScript de navegador leve e leve. É orientado a objetos e tem muitos exemplos, além da API estar documentada. É relativamente novo, mas funcionou muito bem em um dos meus projetos até agora. Uma coisa que eu gosto é que ele lê XML diretamente de strings ou URLs e você também pode usá-lo para converter o XML em JSON.
Aqui está um exemplo do que você pode fazer com o Marknote:
fonte
Eu sempre usei a abordagem abaixo, que funciona no IE e Firefox.
XML de exemplo:
JavaScript:
fonte
innerText
vez de #getAttribute()
Aparentemente, o jQuery agora fornece o jQuery.parseXML http://api.jquery.com/jQuery.parseXML/ a partir da versão 1.5
jQuery.parseXML( data )
Devoluções:XMLDocument
fonte
Por favor, dê uma olhada no XML DOM Parser ( W3Schools ). É um tutorial sobre análise XML DOM. O analisador DOM real difere de navegador para navegador, mas a API do DOM é padronizada e permanece a mesma (mais ou menos).
Como alternativa, use o E4X se você puder se restringir ao Firefox. É relativamente mais fácil de usar e faz parte do JavaScript desde a versão 1.6. Aqui está uma pequena amostra de uso ...
fonte
Para obter mais informações, consulte este http://www.easycodingclub.com/xml-parser-in-javascript/javascript-tutorials/
fonte
Isenção de responsabilidade : eu criei o analisador-xml-rápido
Eu criei o fast-xml-parser para analisar uma string XML no objeto JS / JSON ou no objeto transversal intermediário. Espera-se que seja compatível com todos os navegadores (porém testado apenas no Chrome, Firefox e IE).
Uso
Nota : Ele não usa o analisador DOM, mas analisa a sequência usando RE e a converte em objeto JS / JSON.
Experimente online , CDN
fonte
Você também pode, através da função jquery ($. ParseXML), manipular a sequência xml
exemplo javascript:
fonte