如何使用php更改xml项的值

时间:2011-04-11 08:13:28

标签: php xml

我有以下xml文件test.xml:

<a>
  <b c="test1" d="test2"/>
  <b c="test3" d="test4"/>
</a>

此xml文件可以包含1个或多个b元素。我想问一下如何使用php更改特定b中的项目c的值。

提前致谢。

2 个答案:

答案 0 :(得分:0)

使用:http://php.net/manual/en/book.dom.php

示例(所有c属性):

<?php
$dom = new DomDocument;
$dom->load('sample.xml');

$xpath = new DomXPath($dom);

$cAttribs = $xpath->query('//*[@c]');
foreach ($cAttribs as $entry) {
    $entry->setAttribute('c', 'newValue');
}

header('Content-Type: text/xml; charset="UTF-8"');
echo $dom->saveXml();

仅限特定节点:

$dom = new DomDocument;
$dom->loadXml('<?xml version="1.0" encoding="UTF-8" ?>
<a>
  <b c="test1" d="test2" id="special-case" />
  <b c="test3" d="test4" />
</a>');

$xpath = new DomXPath($dom);

$cAttribs = $xpath->query('//*[@id="special-case"]');
foreach ($cAttribs as $entry) {
    $entry->setAttribute('c', 'newValue');
}

header('Content-Type: text/xml; charset="UTF-8"');
echo $dom->saveXml();

答案 1 :(得分:0)

创建一个“.htaccess”文件,它控制服务器端的页面......

在页面中添加以下行:

AddType application/x-httpd-php .xml

这会将任何xml文档导入PHP,但是如果你不想在你的xml中使用php,它仍然可以,因为php很灵活,页面可以正常工作而不需要在其中编写php。

现在使用一些str替换来获得你想要的工作......

<?php

$xml = "<a>
  <b c="test1" d="test2"/>
  <b c="test3" d="test4"/>
</a>";

$find = array("test1","test2","test3","test4");

$xml = str_replace($find, "stuff", $xml);

echo $xml;

// output:
// <a>
//   <b c="stuff" d="stuff"/>
//   <b c="stuff" d="stuff"/>
// </a>

?>

我希望这是你所寻找的,我希望它有所帮助...