2014-12-05 99 views
-1

通常情况下,我找到了iam锁定的所有stackoverflow。但现在我需要你的帮助。SimpleXML PHP - 从任何节点更改值

我的示例XML:

<xml> 
    <first> 
    <change>Text to change</change> 
    </first> 
    <second> 
    <change1>Text to change</change1> 
    <change2>Text to change</change2> 
    <change3>Text to change</change3> 
    </second> 
</xml> 

现在我需要改变从变化节点的文本。但这是一个例子xml。我不知道XML的结构。我只有变更名称。 是有某事像在JS getElementsByTagName("change") 是什么时,我想改变的变化节点文本

感谢家伙...和SRY,我的英语;)

+0

'first'和'秒'为你”在此使用它们不属于XML,因为兄弟节点根据定义是无序的。 – Madbreaks 2014-12-05 23:03:28

回答

1

使用xpath()

$xml = simplexml_load_string($x); // assume XML in $x 
$changes = $xml->xpath("//*[starts-with(local-name(), 'change')]"); 

这将选择所有以change开头的节点。 //将从树中的任何位置选择它们。结果以$changes的数组形式存储为SimpleXML元素。

现在改变选择的节点:

foreach ($changes as $change) 
    $change[0] = "New Text"; 

看看更改的XML:

echo $xml->asXML(); 

看到它的工作:https://eval.in/231427

+0

thx michi ..多数民众赞成什么即时锁定! :THUMPS UP: – 2014-12-06 00:18:35

+0

很高兴我可以帮助@BjörnBendig – michi 2014-12-06 20:23:21