English 中文(简体)
Pget5 and DOM changing XL node属性价值
原标题:PHP5 and DOM changing XML node attribute value

Having the next 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";      
    }
}

I would like to know how to correctly write the next line of code in the PHP code:

$Idazteko->Attribute( atrib ) = "yes";

这显然是错误的写法。 我要做的是,将可加标的2号“无”改为“有”。 任何想法?

最佳回答

You can find this information in the documentation.

$Idaztekoa->setAttribute( atrib ,  yes );
问题回答

利用Xpath query直接选择你想要改变和操纵的一切属性:

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();




相关问题
Brute-force/DoS prevention in PHP [closed]

I am trying to write a script to prevent brute-force login attempts in a website I m building. The logic goes something like this: User sends login information. Check if username and password is ...

please can anyone check this while loop and if condition

<?php $con=mysql_connect("localhost","mts","mts"); if(!con) { die( unable to connect . mysql_error()); } mysql_select_db("mts",$con); /* date_default_timezone_set ("Asia/Calcutta"); $date = ...

定值美元

如何确认来自正确来源的数字。

Generating a drop down list of timezones with PHP

Most sites need some way to show the dates on the site in the users preferred timezone. Below are two lists that I found and then one method using the built in PHP DateTime class in PHP 5. I need ...

Text as watermarking in PHP

I want to create text as a watermark for an image. the water mark should have the following properties front: Impact color: white opacity: 31% Font style: regular, bold Bevel and Emboss size: 30 ...

How does php cast boolean variables?

How does php cast boolean variables? I was trying to save a boolean value to an array: $result["Users"]["is_login"] = true; but when I use debug the is_login value is blank. and when I do ...

热门标签