[英]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库,包括simplexml和Dom 。 为了选择节点,两个库都支持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.