[英]PHP5 and DOM changing XML node attribute value
擁有下一個XML(Idatzi.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>
以及下一個PHP代碼:
<?php
$xmlIdatziDok = new DOMDocument();
if($xmlIdatziDok->load("Idatzi.xml") === FALSE){die('Error');}
$xPath_IdatziDok = new DOMXPath($xmlIdatziDok);
foreach ($xPath_IdatziDok->query('//markables/markable') AS $Idaztekoa)
{
$IdaztekoaID = $Idaztekoa->getAttribute('id');
$IdaztekoaAtrib = $Idaztekoa->getAttribute('atrib');
if($IdaztekoaAtrib != "yes")
{
$Idazteko->Attribute('atrib') = "yes";
}
}
我想知道如何在PHP代碼中正確編寫下一行代碼:
$Idazteko->Attribute('atrib') = "yes";
這顯然是錯的。 我想要做的是將markable_2的“否”改為“是”。 任何想法?
您可以在文檔中找到此信息。
$Idaztekoa->setAttribute('atrib', '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();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.