javascript - 如何在使用removeChild()方法后更新xml文件

标签 javascript xml jsp removechild

我有一个名为“movies.xml”的 xml 文件。我需要从中删除第一部电影,因此我创建了包含所需代码的“delete.jsp”文件。

这两个文件都存在于 Netbeans 制作的 Java Web 项目文件夹中,我使用 Apache Tomcat 服务器作为本地主机

movies.xml

<?xml version="1.0" encoding="UTF-8"?>
<movies>
    <movie>
        <Title>Journey to the Edge of the Universe</Title>
        <Date>7 December 2008</Date>
        <Publisher>National Geographic</Publisher>
        <Description>
            A journey through space and time.
        </Description>
    </movie>

    <movie>
        <Title>Sea Monsters: A Prehistoric Adventure</Title>
        <Date>5 October 2007</Date>
        <Publisher>National Geographic</Publisher>
        <Description>
            A journey to the bottom of the ancient oceans dramatizes awe-inspiring creatures.
        </Description>
    </movie>
</movies>

删除.jsp

<script>
            function loadXMLDoc() {
                var xmlhttp = new XMLHttpRequest();
                xmlhttp.onreadystatechange = function () {
                    if (this.readyState == 4 && this.status == 200) {
                        deleteMovie(this);
                    }
                };
                xmlhttp.open("GET", "movies.xml", true);
                xmlhttp.send();
            }

            function deleteMovie(xml) {
                var xmlDoc = xml.responseXML;
                x = xmlDoc.getElementsByTagName("movie")[0];
                x.parentNode.removeChild(x);
            }
</script>

代码工作正常,但是当我打开 xml 文件时,我看不到任何更改。

在删除/插入或任何修改后,无需任何其他语言,保存或更新 xml 文件的最佳方法是什么?

最佳答案

删除

删除元素节点

假设“movie.xml”已加载 xmlDoc 将变量 x 设置为要删除的元素节点 使用removeChild()方法从父节点中删除元素节点

x = xmlDoc.getElementsByTagName("movie")[0];
 x.documentElement.removeChild(x);

删除自己 - 删除更改​​文本节点的当前值

x = xmlDoc.getElementsByTagName("movie")[0];

x[0].parentNodechildNodes[0].removeChild(x);nodeValue = "new content"

删除文本节点使用 setAttribute() 更改属性

x = xmlDoc.getElementsByTagName("movie")[0];
y = x.childNodes[0];
x[0].removeChildsetAttribute(y"category","name");

清除文本节点使用nodeValue更改属性

xmlDoc.getElementsByTagName("movie")[0].childNodes[0]getAttributeNode("category").nodeValue = "";"name";

引用:W3学校

更新:

更改文本节点的值

xmlDoc.getElementsByTagName("movie")[0].childNodes[0].nodeValue = "new content"

使用 setAttribute() 更改属性

xmlDoc.getElementsByTagName("movie")[0].setAttribute("category","name");

使用 nodeValue 更改属性

xmlDoc.getElementsByTagName("movie")[0].getAttributeNode("category").nodeValue = "name";

自己尝试一下”

Remove

Update

观察:nodeValue 属性是属性节点的值。更改 value 属性会更改属性的值。

您的问题是: javaScript 没有输入/输出 (I/O) API,因为它是客户端脚本语言,因此无法通过服务器访问文件系统。您需要使用服务器端脚本语言将数据保存到服务器。可能有一些技巧可以在客户端解决您的问题,但它们可能要么未保存,要么有其他错误。 (顺便说一句:save方法成员是什么api?这是你编的吗?)

您可以做的是将数据临时保存到任何 DOM 元素(例如窗口或 javaScript)对象。但是,没有办法使这些更改永久生效。

就您而言,研究 PHP 或 Node js 脚本可能是最好的方法。 但这里的代码是有效的。 引用:here

关于javascript - 如何在使用removeChild()方法后更新xml文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41061694/

相关文章:

javascript - 判断浏览器是否支持打印

JavaScript 创建和删除 "li"标签

javascript - XSLT 2.0 错误处理 : throw exception to javascript

html - 链接到另一个节点中的项目 (XSLT)

java - JSP Scriptlet 与 MVC 在性能方面的比较

javascript - 小书签如何避免弹出窗口拦截器

javascript - 增加文本周围的可选区域

ios - 从 XML/数组创建 map 图钉

java - 函数必须与前缀 -jsp 一起使用

css - <c :out> tag in JSP 中的字体类型