我有一系列任意 XML 文档,我需要对其进行解析并对文档中的每个元素执行一些字符串操作。
例如:
<sample>
<example>
<name>David</name>
<age>21</age>
</example>
</sample>
对于节点名称和年龄,我可能想通过 strtoupper 之类的函数运行它来更改大小写。
我正在努力以通用的方式做到这一点。我一直在尝试使用 RecursiveIteratorIterator 和 SimpleXMLIterator 来实现这一点,但我无法获取父键来更新 xml 文档:
$iterator = new RecursiveIteratorIterator(new SimpleXMLIterator($xml->asXML()));
foreach ($iterator as $k=> $v) {
$iterator->$k = strtoupper($v);
}
这失败了,因为此示例中的 $k 是“名称”,因此它正在尝试执行以下操作:
$xml->name = strtoupper($value);
需要的时候
$xml->example->name = strtoupper($value);
随着文档架构的变化,我想使用通用的东西来处理它们,但我不知道如何获取密钥。
这对 Spl 迭代器和 simplexml 可行吗?