首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DOMDocument不更新nodeValue

DOMDocument不更新nodeValue
EN

Stack Overflow用户
提问于 2017-11-28 10:36:39
回答 1查看 225关注 0票数 0

因此,我编写了一段代码,用于编辑xml文件。但似乎不起作用。我检查了所有的内容,所有的数据似乎都通过了,但不知怎么的,它并没有更新节点。创建xml文件和数据工作,添加数据也工作。但不知何故我似乎无法更新它。

代码语言:javascript
复制
if ($edit && isset($_POST["submit"])) {
    $doc = new DomDocument('1.0');

    $doc->validateOnParse = true;
    $doc->load('data.xml');        
    $message = getElementById($_GET["id"], $doc);
    $message->getElementsByTagName("title")->nodeValue = 'hey';
    $message->getElementsByTagName("content")->nodeValue = $_POST["content"];
    $target = $message->getElementsByTagName("target")->nodeValue = $_POST["target"];
    $date1 = $message->getElementsByTagName("startDate")->nodeValue = $_POST["date1"];
    $date2 = $message->getElementsByTagName("endDate")->nodeValue = $_POST["date2"];

    $doc->formatOutput = true;
    $doc->save('data.xml');

}

function getElementById($id, $doc)
{
    $xpath = new DOMXPath($doc);
    return $xpath->query("//*[@id='$id']")->item(0);
}

XML:

代码语言:javascript
复制
<message id="5a1c301ae5429" top="12px" left="12px" duration="20">
<title>hey</title>
<content>12345</content>
<target>2</target>
<startDate>27/11/2017 16:30</startDate>
<endDate>27/11/2017 16:50</endDate>
<media type="image" width="200px" height="200px" top="-20px" left="129px">
<uri>
localhost/xml/uploads/4215c27edf5ff51aee0def29f84949be.jpg
</uri>
</media>
</message>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-11-28 13:04:30

调用getElementsByTagName时,将返回与标记名称匹配的节点列表。所以每次你访问这个值时,你都应该使用.

代码语言:javascript
复制
$message->getElementsByTagName("title")->item(0)->nodeValue = 'hey';

由于每个标记中只有一个,所以我使用->item(0)来获取列表中的第一个节点。

对所有需要访问元素的时间重复相同的逻辑。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47529403

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档