我正在尝试将具有属性" Boolean"的给定XML文件的所有元素值设置为值True,我有一个一时间搞清楚如何做到这一点:
$dom = new DOMDocument('1.0');
$dom->preserveWhiteSpace = false;
$dom->formatOutput = true;
$dom->loadXML($sxe->asXML());
$xpath = new DOMXPath($dom);
foreach ($xpath->query('//*[@type="Boolean"]') as $node) {
// something to set the value of $node to the value of "True"
}
echo $dom->saveXML();
我试过了:
$node->{0} = value; // does not actually replace values but doesn't error
$node[0] = value; // errors Cannot use object of type DOMElement as array
另外,如果有人知道,我怎么能告诉DOM不用速记输出XML?
答案 0 :(得分:1)
您正在尝试更改attribute
值,因此请使用setAttribute
foreach ($xpath->query('//*[@type="Boolean"]') as $node) {
$node->setAttribute('type', 'True');
}
更新
foreach ($xpath->query('//*[@type="Boolean"]') as $node) {
$node->nodeValue = 'true';
}
对于你的空标记问题,我假设生成这些标记的代码不在你发布的内容中,但是在创建/添加新元素时,使用空参数而不是完全删除它,即:
addChild('elementname', '')
而不是
addChild('elementname')