我有以下xml文件test.xml:
<a>
<b c="test1" d="test2"/>
<b c="test3" d="test4"/>
</a>
此xml文件可以包含1个或多个b元素。我想问一下如何使用php更改特定b中的项目c的值。
提前致谢。
答案 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>
?>
我希望这是你所寻找的,我希望它有所帮助...