5

I'd like to add new elements to a XML file from a user input. I've tried a lot possible ways but none of them worked for me :(

How can I add a new node/element/item to a existing local XML file using JavaScript or jQuery?

This is my current state:

function addElement() {
    var xml;
    if (window.activexobject) {
        xml = new activexobject("microsoft.xmlhttp");
    } else {
        xml = new xmlhttprequest();
    }
    xml.onreadystatechange = function () {
        if (xml.readystate == 4 && xml.status == 200) {
            var resp = xml.responsexml;
            var user = xml.responsexml.createelement("User");

            var name = xml.responsexml.createelement("name");
            name.appendchild(xml.responsexml.createtextnode("sof_user"));

            var admin = xml.responsexml.createelement("admin");
            admin.appendchild(xml.responsexml.createtextnode("false"));

            user.appendchild(name);
            user.appendchild(admin);
            xml.responsexml.documentelement.appendchild(user);
        }
    }
xml.open("get", "users.xml", true);
xml.send(null);
}

the XML should look like this:

<Users>
    <User>
        <name>testuser</name>
        <admin>true</admin>
    </User>
    <User>
        <name>sof_user</name>
        <admin>false</admin>
    </User>
    ....
</Users>
2
  • Are you asking how to save the file to the local hard drive from a browser? Commented Jun 2, 2015 at 15:23
  • @DanField Yes. And how to add a new token Commented Jun 2, 2015 at 15:29

2 Answers 2

3

You should be able to build up your XML something like this:

usersNode = document.createElement("Users");

userNode = document.createElement("User");
nameNode = document.createElement("name");
nameNode.innerText = "testuser";
adminNode = document.createElement("admin");
adminNode.innerText = "true";
userNode.appendChild(nameNode);
userNode.appendChild(adminNode);
usersNode.appendChild(userNode);

userNode = document.createElement("User");
nameNode = document.createElement("name");
nameNode.innerText = "sof_user";
adminNode = document.createElement("admin");
adminNode.innerText = "false";
userNode.appendChild(nameNode);
userNode.appendChild(adminNode);
usersNode.appendChild(userNode);

console.log(usersNode.innerHTML);

I think that should give you what you want.

Sign up to request clarification or add additional context in comments.

3 Comments

How can I add these nodes to a existing XML file (users.xml)?
replace the usersNode = document.createElement("Users"); with whatever your root node is.
Can you put together a JS fiddle or similar to demonstrate the issue you have?
0

If you don't have immediate access to the document, you can also get to it from an existing element:

someElement.ownerDocument.createElement('User');

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.