繁体   English   中英

将具有属性的所有元素设置为某个值

[英]Setting all elements with attribute to a certain value

我正在尝试将具有属性“ Boolean”的给定XML文件的ALL 元素的值设置为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?

您正在尝试更改attribute值,因此请使用setAttribute

foreach ($xpath->query('//*[@type="Boolean"]') as $node) {
             $node->setAttribute('type', 'True');
             }

更新:

foreach ($xpath->query('//*[@type="Boolean"]') as $node) {
                 $node->nodeValue = 'true';
                 }

对于您的空标签问题,我假设生成这些标签的代码不在您发布的内容中,但是在创建/添加新元素时,请使用empty参数而不是将其完全删除,即:

addChild('elementname', '')

代替

addChild('elementname')

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM