【问题标题】:Change manifest.plist values in PHP [duplicate]在 PHP 中更改 manifest.plist 值 [重复]
【发布时间】:2013-03-08 10:34:51
【问题描述】:

我有一个 manifest.plist 文件(来自 Apple)。这是一个 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>

我可以使用 simplexml 将此 XML 作为对象。现在我想更改我的 XML 中的一些值(例如 cloud 为 jp 字符串值的 false)。

【问题讨论】:

  • 好的,但是你的问题是什么?它只是如何编辑XML?然后搜索php edit xml将为您提供所需的一切
  • 现在我尝试使用 DOMElement 和 Xpath 查询 '/plist/dict/key[4]' 来获取云密钥。但是如何将其值更改为 false ?

标签: php xml simplexml manifest


【解决方案1】:

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

你说的元素在这里:

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

并且您想从 &lt;true/&gt; 更改为 &lt;false/&gt;。但是,不是更改值,而是将 &lt;true/&gt; 元素节点替换为新节点,&lt;false/&gt; 元素节点。

SimpleXML 不可能(真的)这样做,因为它不能替换节点。

使用DomDocument,您可以使用DOMNode::replaceChild()Docs 函数来实现。

一个例子:

假设您有变量 $key,它是您通过 xpath 获取的 &lt;key&gt; 元素。

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

【讨论】:

    猜你喜欢
    • 2015-02-07
    • 1970-01-01
    • 2015-10-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-08
    相关资源
    最近更新 更多