Pergunta sobre jquery, javascript, xml – escrevendo arquivos XML com jQuery

4

Chamar atributos xml através do jquery é fácil, apenas:

$(this).attr('name', 'hello');

mas como posso adicionar outra tag no arquivo? Eu tentei usar append o JS morre silenciosamente.

Há alguma maneira de fazer isso?

Esclarecimentos: este código faz parte de uma extensão do firefox, então não se preocupe em salvar no sistema de arquivos do usuário. Ainda acrescentar não funciona para documentos xml, mas posso alterar os valores dos atributos xml

Sua resposta

2   a resposta
10

documento da página da Web, portanto, em resultado, o nó não pode ser anexado a um documento XML diferente. Portanto, o nó deve ser criado no documento XML.

Você pode fazer isso assim

var xml = $('<?xml version="1.0"?><foo><bar></bar><bar></bar></foo>'); // Your xml
var xmlCont = $('<xml>'); // You create a XML container
xmlCont.append(xml); // You append your XML to the Container created in the main document

// Now you can append without problems to you xml
xmlCont.find('foo bar:first').append('<div />');

xmlCont.find('foo bar div'); // Test so you can see it works
@Raybiez está correto sobre o IE - no entanto, a partir do jQuery 1.5, você poderá usar .parseXML (...) para resolver esse problema (não foi testado):api.jquery.com/jQuery.parseXML Yarin
Isso funciona muito bem em FF e Chrome, mas o IE não gosta muito disso. O problema é que não é possível analisar a cadeia XML inicial na primeira expressão. Mesmo que você lide com a análise específica do IE, ter seu documento XML envolvido em um objeto jQuery não permite anexá-lo ao nó <xml> como mostrado acima. O método 'html' também não funciona, é necessário usar 'innerHTML' e fornecer a string XML inicial como seu valor. Tentando encontrar nós no nó <XML> também não funcionará. Você terá que usar $ ("foo bar: first", xmlDoc) para fornecer algum contexto para jQuery. Raybiez
1

ue determinar por que o acréscimo está causando um erro (ou se o erro está em outro lugar). Algo como:

$('selector').append('<p></p>');

deve funcionar muito bem.

Eu posso confirmar que isso morre silenciosamente Yarin
Já experimentou os manipuladores relacionados, como prepend () e insertAfter ()? acrosman
não há erro, mas a função para de executar. CamelCamelCamel

Perguntas relacionadas