我需要知道如何更改标签的内容(不是属性,只是内容)。我不需要这个父标签内的内部标签。我只需要在里面放一些文字。 (替换下一个xml文件的“1. Hello World”):
<config name="THIS" type="string">1. Hello World)</config>
<config name="IS" type="string">2. Hello World!</config>
<config name="SPARTA" type="string">3. Hello World?</config>
// create simple xml object
$xml = new SimpleXMLElement(file_get_contents('file.xml'));
// new names and values
$names = array('THIS', 'SPARTA');
$values = array('1. Good bye world(', '3. Good bye world?');
// replace here
foreach($xml as $a => $xmlElement) {
$indexOfName = array_search($names, (string)$xmlElement['name']);
if ($indexOfName !== false) {
// here I need to replace the value (e.g. 1. Hello World)) of config
// with the attribute @name == $names[$i] with the new value
// $values[$i] (3. Good bye world?)
}
}
答案 0 :(得分:1)
通常,您需要父元素,或者如果您知道父元素的结构,则可以尝试使用xpath。除此之外,你可能想尝试这个黑客:
$xmlElement->{0} = $values[$indexOfName];
答案 1 :(得分:1)
我找到了临时解决方案。它创建一个新的简单xml并从当前简单的xml中复制所有内容并替换内容值
$newXml = new SimpleXMLElement('<' . $xml->getName() . '></' . $xml->getName() . '>');
foreach($xml as $a => $xmlElement) {
$attr = $newXml->addChild($a, 'New content of the tag');
foreach($xmlElement->attributes() as $k => $v) {
$attr->addAttribute($k, $v);
}
}
echo $newXml->asXML();
然而它是暂时的。我希望如果有人能够提供更好的解决方案