2013-03-08 22 views
0

我有一个manifest.plist文件(来自Apple)。这是一个XML文件。 这里的结构的为例:更改PHP中的manifest.plist值

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> 
<plist version="1.0"> 
    <dict> 
    <key>id</key> 
    <string>3214</string> 
    <key>name</key> 
    <dict> 
     <key>en</key> 
     <string>Hello World</string> 
     <key>jp</key> 
     <string>Hello World JP</string> 
    </dict> 
    <key>kilometers</key> 
    <integer>430</integer> 
    <key>cloud</key> 
    <true/> 
    </dict> 
</plist> 

我能得到这个XML与SimpleXML的对象。现在我想改变我的XML中的一些值(例如云到jp字符串值的false)。

+1

好的,但是你的问题是什么?它只是如何编辑XML?然后搜索'php编辑xml'会给你所需的一切 – 2013-03-08 10:36:25

+0

现在我试着用DOMElement和Xpath查询'/ plist/dict/key [4]'来获得云密钥。但是,如何将其价值改变为假? – Pierre 2013-03-08 11:02:25

回答

1

现在我尝试使用DOMElement和Xpath查询'/ plist/dict/key [4]'来获取云密钥。但是,如何将其价值改变为假?

你谈论的元素是在这里:

<key>cloud</key> 
    <true/> 

你想改变<true/><false/>。然而,这是而不是更改值,但用一个新节点,一个<false/>元素节点替换<true/>元素节点。

这不(真的)可能与SimpleXML,因为它不能取代节点。

使用DomDocument您可以使用DOMNode::replaceChild()Docs功能。

一个例子:

让我们假设你有变量$key,这是你已经通过的XPath获取的<key>元素。

$true = $key->nextSibling; 
$false = $key->ownerDocument->createElement('false'); 
$key->parentNode->replaceChild($false, $true);