Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/231.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP5和DOM更改XML节点属性值_Php_Xml_Dom_Domdocument - Fatal编程技术网

PHP5和DOM更改XML节点属性值

PHP5和DOM更改XML节点属性值,php,xml,dom,domdocument,Php,Xml,Dom,Domdocument,拥有下一个XMLIdatzi.xml: <?xml version='1.0' encoding='ISO-8859-1'?> <!DOCTYPE markables SYSTEM "markables.dtd"> <markables> <markable id="markable_1" atrib="yes" span="word_1..word_4"> </markable> <markable id="markable_2

拥有下一个XMLIdatzi.xml:

<?xml version='1.0' encoding='ISO-8859-1'?>
<!DOCTYPE markables SYSTEM "markables.dtd">
<markables>
<markable id="markable_1" atrib="yes" span="word_1..word_4"> </markable>
<markable id="markable_2" atrib="no" span="word_6..word_7"> </markable>
<markable id="markable_3" atrib="yes" span="word_10..word_24"> </markable>
</markables>

这显然是写错了。我想做的是将markable_2的no改为yes。有什么想法吗?

您可以在中找到这些信息


您可以在中找到此信息


使用xpath查询直接选择要更改的所有属性并对其进行操作:

foreach($xp->query('/markables/markable/@atrib[. != "yes"]') as $attrib)
{
    $attrib->nodeValue = 'yes';
}
完成了。完整示例:

$xml = <<<XML
<?xml version='1.0' encoding='ISO-8859-1'?>
<!DOCTYPE markables SYSTEM "markables.dtd">
<markables>
    <markable id="markable_1" atrib="yes" span="word_1..word_4"> </markable>
    <markable id="markable_2" atrib="no" span="word_6..word_7"> </markable>
    <markable id="markable_3" atrib="yes" span="word_10..word_24"> </markable>
</markables>
XML;

$doc = new DOMDocument();
$doc->loadXML($xml);
$xp = new DOMXPath($doc);

foreach($xp->query('/markables/markable/@atrib[. != "yes"]') as $attrib)
{
    $attrib->nodeValue = 'yes';
}

echo $doc->saveXML();

使用xpath查询直接选择要更改的所有属性并对其进行操作:

foreach($xp->query('/markables/markable/@atrib[. != "yes"]') as $attrib)
{
    $attrib->nodeValue = 'yes';
}
完成了。完整示例:

$xml = <<<XML
<?xml version='1.0' encoding='ISO-8859-1'?>
<!DOCTYPE markables SYSTEM "markables.dtd">
<markables>
    <markable id="markable_1" atrib="yes" span="word_1..word_4"> </markable>
    <markable id="markable_2" atrib="no" span="word_6..word_7"> </markable>
    <markable id="markable_3" atrib="yes" span="word_10..word_24"> </markable>
</markables>
XML;

$doc = new DOMDocument();
$doc->loadXML($xml);
$xp = new DOMXPath($doc);

foreach($xp->query('/markables/markable/@atrib[. != "yes"]') as $attrib)
{
    $attrib->nodeValue = 'yes';
}

echo $doc->saveXML();
$xml = <<<XML
<?xml version='1.0' encoding='ISO-8859-1'?>
<!DOCTYPE markables SYSTEM "markables.dtd">
<markables>
    <markable id="markable_1" atrib="yes" span="word_1..word_4"> </markable>
    <markable id="markable_2" atrib="no" span="word_6..word_7"> </markable>
    <markable id="markable_3" atrib="yes" span="word_10..word_24"> </markable>
</markables>
XML;

$doc = new DOMDocument();
$doc->loadXML($xml);
$xp = new DOMXPath($doc);

foreach($xp->query('/markables/markable/@atrib[. != "yes"]') as $attrib)
{
    $attrib->nodeValue = 'yes';
}

echo $doc->saveXML();