最新消息:Welcome to the puzzle paradise for programmers! Here, a well-designed puzzle awaits you. From code logic puzzles to algorithmic challenges, each level is closely centered on the programmer's expertise and skills. Whether you're a novice programmer or an experienced tech guru, you'll find your own challenges on this site. In the process of solving puzzles, you can not only exercise your thinking skills, but also deepen your understanding and application of programming knowledge. Come to start this puzzle journey full of wisdom and challenges, with many programmers to compete with each other and show your programming wisdom! Translated with DeepL.com (free version)

javascript - Add new node to local XML file with JS or jQuery - Stack Overflow

matteradmin3PV0评论

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>

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>
Share Improve this question edited Jun 2, 2015 at 15:34 ArmandoS63 asked Jun 2, 2015 at 14:46 ArmandoS63ArmandoS63 7031 gold badge6 silver badges21 bronze badges 2
  • Are you asking how to save the file to the local hard drive from a browser? – Dan Field Commented Jun 2, 2015 at 15:23
  • @DanField Yes. And how to add a new token – ArmandoS63 Commented Jun 2, 2015 at 15:29
Add a ment  | 

2 Answers 2

Reset to default 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.

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

someElement.ownerDocument.createElement('User');
Post a comment

comment list (0)

  1. No comments so far