【问题标题】:Remove an XML node by index with jquery & write back to file使用 jquery 按索引删除 XML 节点并写回文件
【发布时间】:2012-01-22 14:16:01
【问题描述】:

我有以下 xml 结构:

    <?xml version="1.0" encoding="utf-8" ?>
    <nws>
      <url>http://cpa.hypotheses.org/feed</url>
      <url>http://news.ycombinator.com/rss</url>
      <url>http://rss.slashdot.org/Slashdot/slashdot</url>
      <url>http://feeds.feedburner.com/hackaday/LgoM</url>
    </nws>

...等等。

我想删除第 n 个元素。而已。我见过的所有示例都涉及使用 xmatch 搜索节点内容,但我无法搜索它,因为 1-它是一个复杂的字符串,并且 2-我真的不知道要删除的字符串,但我知道索引。

我可以像这样读取所有 url 节点:

$.ajax({
type: 'GET',
url: 'conf.xml',
dataType: 'xml',
success: parseXml
});


$(xml).find("url").each(function() {
    $("#output").append($(this).text());
    // $("#output").append(": " + $(this).find("Title").text() + "<br />");
});

但我似乎不能说“只输出第二个”,更不用说删除它了。

还有一件事。我知道一旦我操作了 XML DOM,我必须使用

将它写回文件
echo $urlFile->asXML('myfile.xml');

但是这个过程在某种程度上是模糊的(这个“asXML”方法属于哪个类?它在这种情况下是否可用?我是否必须加载另一个库而不仅仅是 jquery.js ?) 我在这个过程中迷失了方向;有人可以发布整个过程的概要吗?即

  1. 读取文件
  2. 找到,说第二个节点通过节点的名称(不是它的内容或属性)
  3. 删除它
  4. 将修改后的 DOM 表示写回文件

(理想情况下,我希望能够在写回文件之前进行一些检查,例如空行等)

即使示例不起作用,我也只是想围绕这个概念展开思考。

【问题讨论】:

    标签: jquery xml


    【解决方案1】:

    好的,我解决了一半的 pb:我现在可以使用它的索引删除第 n 个节点,如下所示:

    $(document).ready(function() {
    
        $.ajax({
        type: 'GET',
        url: 'conf.xml',
        dataType: 'xml',
        success: parseXml
        });
    
        function parseXml(xml) {
        $(xml).find("url").eq(3).remove(); // <= The answer I was looking for
    
        $(xml).find("url").each(function(index) {
            $("#output").append($(this).text());
        });
        }
    });
    

    这会输出没有第三个元素的列表。 (但不是作为 DOM 对象)。不过,哇哦!

    现在如何在 php var 中将其取回(作为 DOM 对象)以将其写回文件?或者可能使用ajax?我可以从 ajax 读取文件,但不能写入文件,我不知道该怎么做,有没有人做过这可以为我指明正确的方向? (将 JS 处理的 XML 保存到 实际 文件?)

    问候,-ph

    【讨论】:

    • 好的,我放弃了 jquery 并使用 simplexml 制作了所有内容(代码按需提供);谢谢大家!
    • ..现在我想弄清楚为什么我不能在 PHP DOMDocument 对象上调用 firstChild (所有其他方法似乎都有效,但 insertBedore 和 firstChild 都不起作用,它们都失败了默默地 - (WFT?createElement 和 appendChild 工作)。我也想知道在哪里捕获任何 DOM 错误(我在 firebug 中什么都看不到,在任何选项卡中都看不到)但我想你们不知道那个。
    猜你喜欢
    • 2012-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-10
    • 2010-12-23
    • 2015-08-30
    相关资源
    最近更新 更多