【问题标题】:delete XML node using javascript in firefox在 Firefox 中使用 javascript 删除 XML 节点
【发布时间】:2009-12-06 21:31:03
【问题描述】:

我正在尝试使用 Javascript 删除 XML 文件中的节点。使用的浏览器是火狐。我到达我想成功删除的节点,然后我尝试 delNode.ParentNode.RemoveChild(delNode) 但是当我回到硬盘上的 xml 文件时,节点仍然存在。我需要删除整个节点(不仅是子节点)。如果有人可以指导我做什么,我会非常感激;) 谢谢

【问题讨论】:

    标签: javascript xml


    【解决方案1】:

    这应该删除delNode。你有错误吗? delNode.parentNode.removeChild(delNode) 的结果是什么?我一直在做同样的事情,它对我有用。

    很抱歉,我错过了将其写回文件的部分。使用nsiFilechrome:// url 来执行此操作。为了利用这些东西,您可能必须创建一个目录,其中包含一个名为“chrome”的目录,其中包含您的脚本,一个 chrome.manifest 文件。

    【讨论】:

    • 感谢您的回答。在实现这个方法 delNode.parentNode.removeChild(delNode) 时,我的代码停在这一行并且不执行其余的功能。我尝试了另一种方式 y=xmlDoc.getElementsByTagName("file")[0]; window.alert(y); xmlDoc.documentElement.removeChild(y);在后一种情况下,我没有收到错误,所有代码都在我的浏览器中实现,但是当我回到硬盘上的 xml 文件时,节点仍然存在。我不知道出了什么问题,因为这是我第一次尝试这个。任何的想法!非常感谢
    • 呃。更改 DOM 只会更改您在内存中加载的副本,它不会写回您从中加载它的文件。您需要将 DOM 重新序列化回 XML 文件以替换光盘副本。如果您在网页中(不是浏览器 chrome),则根本无法写入本地文件系统。
    • 哦,我错过了将其写回文件的整个部分。没错,你需要使用 chrome:// url 和 nsiFile 类将文件写入磁盘。
    • 更新了答案,提供了希望对您有所帮助的相关信息。
    【解决方案2】:

    感谢您的帮助。我找不到在 javascript 中更改文件内容的方法,所以我使用了 PHP。我只是想删除我的 xml activity1.xml 中的第一个节点。代码如下:

    $xdoc = new DomDocument;
    $xdoc->Load('images\activity\activity1.xml');
    $xdoc->documentElement->removeChild($xdoc->documentElement->childNodes->item(1));
    $xdoc->save('images\activity\activity1.xml');
    

    它只是删除第一个节点,无论它有什么子节点;)

    【讨论】:

      猜你喜欢
      • 2023-03-29
      • 2013-11-05
      • 2021-05-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多