2010-01-19 60 views
10

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

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

+0

可能的重复[如何设置SimpleXmlElement的文本值而不使用其父级?](http://stackoverflow.com/questions/3153477/how-can-i-set-text-value-of-simplexmlelement-而不-使用-其父母) – 2017-01-25 10:02:54

回答

13

当然,你可以用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

7

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

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

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

0

我正在像这样工作(它完全相同,但它可以帮助): 只要它是简单的xml文本,文件test.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> 

希望它能帮助!