使用PHP编辑和删除XML节点

时间:2010-11-23 08:01:02

标签: php xml editing

我一直在环顾四周,但仍然无法找到一个可行的答案来编辑和删除xml与php而不使用simpleXML(我希望我能用它)。我希望有人可以简单地为我分解它,因为我的大脑不能应付这些东西!我必须使用的xml文件看起来像这样:

<allentries>
  <entry>
    <entryid>1</entryid>
    <title>This is the title</title>
    <date>2010</date>
    <author>Some Guy</author>
  </entry>
  <entry>
    <entryid>2</entryid>
    <title>This is Another title</title>
    <date>2011</date>
    <author>Some Other Guy</author>
  </entry>
  <entry>
    <entryid>3</entryid>
    <title>This is the other title</title>
    <date>2012</date>
    <author>And Another Guy</author>
  </entry>
</allentries>

我需要能够用PHP做两件事 - 首先我需要能够接受从表单发布的值,根据entryid号选择正确的条目,并使用新数据修改该条目中的每个元素。例如。如果entryid = 2,则跳至第二个条目,并将标题,日期和作者中的文本替换为新数据。

我需要做的第二件事(显然具有不同的功能)是根据entryid号选择条目并删除整个条目,标签,数据,子项等。

听起来不应该太难,但到目前为止我用过的每个例子都没有做任何事情。任何人都可以在某个地方建议任何可能对我有帮助的教程吗?

非常感谢你的时间!

2 个答案:

答案 0 :(得分:0)

使用正则表达式的两种快捷方式:

  • 使用正则表达式将XML拆分为数组,并将entryid的值作为键
    • on update只构造新值并替换指定键的值
    • on delete just unset
  • 使用正则表达式替换节点

不知道这两个案例的表现。我会尝试提供正则表达式来帮助你。

加布里埃尔

答案 1 :(得分:0)

好的,抱歉,做了一些进一步的研究,并在this site使用:

找到了一个很好的例子
$xml_file = "thefile.xml";
if(!$xml=simplexml_load_file($xml_file)){
    trigger_error('Error reading XML file',E_USER_ERROR);
}

simplexml_load_file而非simplexml_load_string现在就像魅力一样!难怪你们很困惑 - 感谢你们所有的回复和容忍我的无聊!