Create node in xml with jquery

2

<?xml version="1.0" encoding="UTF-8"?>
<dados>
    <usuarios>
        <usuario>
            <login>usuario</login>
            <senha>senha123</senha>
        </usuario>
    </usuarios>
</dados>

I can easily read the user's nodes. But I can not add another user. Can someone help me? If there is any way with pure javascript also no problem. Thank you in advance!

Edit 1 : The jquery code I'm using is this:

$.ajax({
        url: "../xml/dados.xml",
        type: "get",
        dataType: "xml",
        success: function(data) {
            xml = data;
            var xmlDoc = $(xml);
            var element = xmlDoc.filter('usuarios');
            $(element).attr('type', 'vip');
            $(element).append("<usuario><login>usuario2</login><senha>senha321</senha></usuario>");
            $("body").append(xmlDoc);
        }
});

I found this code looking in this jquery forum: link

    
asked by anonymous 04.06.2017 / 01:10

2 answers

1

You can manipulate a XML in the same way that you manipulate a HTML .

Then you just have to make a selector that got the usuarios node and add content to it.

var xmlText = '<?xml version="1.0" encoding="UTF-8"?>
  <dados>
      <usuarios>
          <usuario>
              <login>usuario1</login>
              <senha>senha123</senha>
          </usuario>
      </usuarios>
  </dados>
';

var parser = new DOMParser();
var xmlDoc = parser.parseFromString(xmlText, "text/xml");

var xml = $(xmlDoc);
var usuarios = $("usuarios", xmlDoc);

usuarios.append('
  <usuario>
      <login>usuario2</login>
      <senha>senha321</senha>
  </usuario>
');

console.log(xmlDoc.documentElement.outerHTML);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

ThecodeshownaboveusingjustJavaScript.

var xmlText = '<?xml version="1.0" encoding="UTF-8"?>
  <dados>
      <usuarios>
          <usuario>
              <login>usuario1</login>
              <senha>senha123</senha>
          </usuario>
      </usuarios>
  </dados>
';

var parser = new DOMParser();
var xmlDoc = parser.parseFromString(xmlText, "text/xml");
var usuarios = xmlDoc.documentElement.querySelector("usuarios");

var usuarioText = '<?xml version="1.0" encoding="UTF-8"?>
  <usuario>
      <login>usuario2</login>
      <senha>senha321</senha>
  </usuario>
';

var usuarioDoc = parser.parseFromString(usuarioText, "text/xml");
usuarios.appendChild(usuarioDoc.documentElement);

console.log(xmlDoc.documentElement.outerHTML);
    
04.06.2017 / 03:23
0

See if this solves your problem

$.get('teste.xml', function(response){
			var xml = response;
			var usuarios = xml.querySelector('usuarios');
			var novoUsuario = xml.createElement('usuario');
			var login = xml.createElement('login');
			var senha = xml.createElement('senha');

			login.appendChild( xml.createTextNode("geeksilva") );
			senha.appendChild( xml.createTextNode("123") );
			novoUsuario.appendChild(login);
			novoUsuario.appendChild(senha);
			usuarios.appendChild(novoUsuario)


		}, 'xml');	

I've done using pure javascript myself, you see, just use the DOM that is typically used for HTMLDocument . The difference is the object that is XMLDocument but the way to manipulate the DOM follows the same principles

    
04.06.2017 / 03:12