使用jquery&amp ;;通过索引删除XML节点写回文件

时间:2011-12-17 12:01:33

标签: jquery xml

我有以下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 - 它是一个复杂的字符串而且我真的不知道要删除的字符串,但我知道索引。

我可以像这样读取所有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表示写回文件
  5. (理想情况下,我希望能够在写回文件之前做一些检查,比如空行等)

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

1 个答案:

答案 0 :(得分:0)

好的,我解决了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());
    });
    }
});

这将输出我没有第3个元素的列表。 (但不是作为DOM对象)。不过,Wohoo!

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

问候,-ph