我有一个问题,我需要使用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中的这个单词!
詹姆斯
答案 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库,包括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();