使用simpleXML编辑XML

时间:2010-01-19 08:42:58

标签: php xml simplexml

如何使用simpleXML编辑xml文件中的值?

我知道如何创建文件,但不知道如何编辑现有文件中的值?

4 个答案:

答案 0 :(得分:14)

确定您可以使用SimpleXML进行编辑:

$input = <<<END
<?xml version='1.0' standalone='yes'?>
<documents>
  <document>
    <name>spec.doc</name>
  </document>
</documents>
END;

$xml = new SimpleXMLElement($input);
$xml->document[0]->name = 'spec.pdf';
$output = $xml->asXML();

查看examples

答案 1 :(得分:7)

使用SimpleXML加载XML并进行更改。然后,您可以使用asXML方法将XML保存到文件中(将文件名作为参数传递):

$xml = new SimpleXMLElement( $xmlString );
// do the manipulation here
$xml->asXML ( '/path/to/your/file.xml' );

答案 2 :(得分:4)

请记住,尽管您可以使用SimpleXML编辑XML,但仍存在一些限制。例如,您可以删除或删除节点或元素。您可以将其清除以使其空白,但您无法完全消除它。为此,您需要DOM或类似的东西。

答案 3 :(得分:1)

我这样工作(它完全相同,但它可以帮助): 文件test.xml可以是任何扩展名,只要它是普通的xml文本。

的test.xml:

<?xml version="1.0" encoding="utf-8"?>
<sitedata>
    <Texts>
        <ANode SomeAttr="Green" OtherAttr="Small"/>This is the text I'm changing.</ANode>
    </Texts>
</sitedata>

PHP代码:

$xml=simplexml_load_file("test.xml") or die("Error: Cannot create object");
$SomeVar="<b>Text. This supports html code.</b><br/>I also work with variables, like GET or POST.";
$xml->Texts[0]->{'ANode'}=$SomeVar;
$xml->asXml('test.xml');

结果test.xml:

<?xml version="1.0" encoding="utf-8"?>
<sitedata>
    <Texts>
    <ANode SomeAttr="Green" OtherAttr="Small"/>&lt;b&gt;Text. This supports html code.&lt;/b&gt;&lt;br/&gt;I also work with variables, like GET or POST.</ANode>
    </Texts>
</sitedata>

希望它有所帮助!