SimpleXML PHP - Change Value from any Node [duplic

2019-08-15 18:38发布

问题:

This question already has an answer here:

  • Updating a node value with PHP's simpleXML and xpath not working 3 answers

Normaly i find everything at stackoverflow what iam locking for. but now i need ur help.

my example 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>

Now i need to change the text from the change nodes. But this is a example xml. i dont know the structure from the xml. i only have the change names. is there sth like in js getElementsByTagName("change") what is to when i want to change the text from the change nodes

thanks guys... and sry for my english ;)

回答1:

Use xpath():

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

This will select all nodes starting with change. The // will select them from whatever position in the tree. The results are stored as SimpleXML elements in an array in $changes.

Now change the selected nodes:

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

Take a look at the changed XML:

echo $xml->asXML();

see it working: https://eval.in/231427