在PHP中更改manifest.plist值[复制](Change manifest.plist v

2019-10-29 07:51发布

这个问题已经在这里有一个答案:

  • 编辑XML使用SimpleXML 4答案

我有一个manifest.plist文件(来自苹果)。 这是一个XML文件。 下面是结构的为例:

<?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(例如云计算为false JP字符串值)的一些值。

Answer 1:

现在,我试图用一个DOMElement和XPath查询“/ plist中/字典/键[4]”,让云计算的关键。 但其价值如何更改为假?

请您谈谈元素是在这里:

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

而要改变从<true/><false/> 然而,其改变值,而是替换<true/>用一个新节点,元素节点<false/>元素节点。

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

随着DomDocument你可以用做DOMNode::replaceChild() 文档功能。

一个例子:

让我们假设你有变量$key ,它是<key>元素您通过XPath的进账。

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


文章来源: Change manifest.plist values in PHP [duplicate]