繁体   English   中英

使用php脚本编辑XML

[英]Editing XML using a php script

我有一个问题,我需要根据已传递的字符串变量,使用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中的这个单词!

詹姆士

您看过Domdocument类吗? 通过此类http://www.php.net/manual/es/class.domdocument.php ,您可以编辑XML

您使事情变得太复杂了。 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中以进行进一步处理。 你的选择。

如果没有必要,我建议不要在PHP中使用dom。

例如,从头开始编写文档就可以不使用dom。

即使您不使用Dom php,也要小心编码,如果您需要在dom之后使用生成的文件...那么放置适当的xml标头...(如果没有,它实际上是@ *!§&)

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

暂无
暂无

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

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