如何在现有xml php的末尾添加新节点

问题描述 投票:0回答:1

我有这个xml文件

<?xml version="1.0" encoding="utf-8"?>
<Schedule xmlns="schedule" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="schedule.xsd">
  <Event>
    <Title>Artificial Intelligence</Title>
    <Lecture Classroom="A14">
      <Day>Wednesday</Day>
      <Time>09:00-11:00</Time>
    </Lecture>
    <Professor>Peter Parker</Professor>
    </Event>
  <Event>
    <Title>Constraint Satisfaction Problems</Title>
    <Lecture Classroom="E7">
      <Day>Monday</Day>
      <Time>19:00-21:00</Time>
    </Lecture>
    <Professor>David Peterson</Professor>
  </Event>
  <Event>
    <Title>Knowledge Representation in Web</Title>
    <Lecture Classroom="A3">
      <Day>Friday</Day>
      <Time>15:00-17:00</Time>
    </Lecture>
    <Professor>Dave Norton</Professor>
  </Event>
  <Event>
    <Title>Artificial Intelligence</Title>
    <Lecture Classroom="A2">
      <Day>Monday</Day>
      <Time>19:00-21:00</Time>
    </Lecture>
    <Professor>Michael Bay</Professor>
  </Event>
 </Schedule>

而且我想在上述xml的结尾中添加新的“事件”,就像这样

<Event>
  <Title>Maths</Title>
    <Lecture Classroom="B1">
      <Day>Monday</Day>
      <Time>19:00-20:00</Time>
    </Lecture>
    <Professor>Will Robes</Professor>
  </Event>
到目前为止,我尝试过的

代码创建成功的元素,但是将它们写入文件中的错误位置。这里是代码 https://pastebin.com/qUqaab3SB

php xml dom
1个回答
0
投票

在您的代码中,您只是找到第一个<Event>标签并将信息添加到该标签中...

// find the Event tag
$root = $xmldoc->getElementsByTagName('Event')->item(0);

您需要做的是创建一个新的<Event>标记,将所有信息添加到该标记,然后将此新事件添加到当前文档的末尾。因此,将以上行替换为...

// Create the Event tag
$root = $xmldoc->createElement("Event");
// Add it into the existing document
$xmldoc->documentElement->appendChild($root);
© www.soinside.com 2019 - 2024. All rights reserved.