更改simpleXML属性名称

时间:2015-01-08 06:36:17

标签: php xml xpath



<Root>
...
    <A CHANGE_THIS="Dont_ChengeME">
        <B></B>  
    </A>
...
</Root>
&#13;
&#13;
&#13;

尝试更改元素A的属性名称 我选择的东西,使用php的simpleXML API。这就是我所做的:

&#13;
&#13;
$xml = simplexml_import_dom($xmldom);
    $query = "root/A[@]";
    $result = $xml->xpath($query);  
       if(!empty($result))
         $result['CHANGE_THIS'] = "Blalalalal";       //i believe this is where am doing it wrong
&#13;
&#13;
&#13;

所有尝试都失败了。任何想法?

2 个答案:

答案 0 :(得分:0)

你可以这样做:

$xml->A['changed_value'] = $xml->A['CHANGE_THIS'];
unset($xml->A['CHANGE_THIS']);

你的尝试不起作用的原因是

$result['CHANGE_THIS'] = "Blalalalal";

将字符串“Blalalala”分配给由“CHANGE_THIS”索引的数组元素。我不知道有效更改数组元素索引的简单方法,除了将元素复制到具有所需索引的新元素(即'changed_value'),然后取消设置原始数组元素。

答案 1 :(得分:0)

这是一种方法,假设您不需要使用XPath:

<?php
$xml = simplexml_load_file($xmldom);
$result = $xml->{'A'}->attributes();
if(!empty($result)) {
  $preserve_this = $result['CHANGE_THIS'];
  $result->addAttribute('Blalalalal', $preserve_this);
  unset($result['CHANGE_THIS']);
}