使用php脚本编辑XML

时间:2012-08-03 12:46:25

标签: php xml file editing

我有一个问题,我需要使用php编辑一个xml文件,基于它传递的字符串变量。

即,我的php有一个字符串变量,其值为“true”或“false”,我需要更改以下xml文件代码:

<Parameter>             
     <ParameterName>Method1</ParameterName>                  
     <ParameterDescription>description</ParameterDescription>
     <ParameterValue type="bool">false</ParameterValue>
</Parameter>

<Parameter> 
     <ParameterName>Method2</ParameterName>       
     <ParameterDescription>description</ParameterDescription> 
     <ParameterValue type="bool">true</ParameterValue>
</Parameter> 

<Parameter>
     <ParameterName>Method3</ParameterName>
     <ParameterDescription>description</ParameterDescription>
     <ParameterValue type="float">0.025</ParameterValue> 
</Parameter>

这样第一个“ParameterValue”从默认的“false”变为变量的值(注意php中的变量是一个字符串,而xml中的变量是一个布尔类型)。我看过涉及awk,sen和dom的建议没有太多运气。我希望用最简单的方法来改变XML中的这个单词!

詹姆斯

4 个答案:

答案 0 :(得分:0)

你见过Domdocument课吗? http://www.php.net/manual/es/class.domdocument.php使用此类,您可以编辑XML

答案 1 :(得分:0)

你让事情变得太复杂了。 XML只是一个字符串(文本文件),具有一些格式化要求。只需创建其他任何字符串,但请记住这些格式规则。

这应该可以解决PHP问题。

$xml = <<<EOT
<Parameter>              
     <ParameterName>Method1</ParameterName>                   
     <ParameterDescription>description</ParameterDescription>
EOT

$xml .= '     <ParameterValue type="bool">' . $var . "false</ParameterValue>\n";
$xml .= <<<EOT;
</Parameter> 

<Parameter>  
     <ParameterName>Method2</ParameterName>        
     <ParameterDescription>description</ParameterDescription>  
     <ParameterValue type="bool">true</ParameterValue> 
</Parameter>  

<Parameter> 
     <ParameterName>Method3</ParameterName> 
     <ParameterDescription>description</ParameterDescription> 
     <ParameterValue type="float">0.025</ParameterValue>  
</Parameter> 
EOT;

然后,您可以将字符串保存到文件(添加所需的其他XML内容!),将其打印到STDOUT或将其加载到DOMDocument中以进行进一步处理。你的选择。

答案 2 :(得分:0)

如果不是真的有必要,我建议不要使用php ...

例如,从头开始编写文档可以在没有dom的情况下完成。

即使你不使用Dom php,也要小心编码,如果你需要在dom之后使用生成的文件...然后放入适当的xml标题...(没有它真的是@ *!§&amp; ;)

答案 3 :(得分:0)

php中有多个xml库,包括simplexmlDom。 为了选择节点,两个库都支持xpath,这是一个强大的工具。 使用Dom,这看起来像这样:

$the_variable = true;
$xml = simplexml_load_string($xml);
$elements = $xml->xpath('//Parameter/ParameterValue[text()="false"]'); // select paramter/parameterValue nodes where the text content is "false"
foreach ($elements as $elem) {
    $elem[0] = $the_variable; // will output "<ParameterValue>1</ParameterValue>"
    // $elem[0] = var_export($the_variable, true); // will output "<ParameterValue>true</ParameterValue>"
}   

print $xml->saveXML();