0

私は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>

このXMLをsimplexmlを使用してオブジェクトとして取得できます。ここで、XMLのいくつかの値を変更したいと思います(たとえば、クラウドをjp文字列値のfalseに変更します)。

4

1 に答える 1

1

ここで、DOMElementとXpathクエリ'/ plist / dict / key [4]'を使用して、クラウドキーを取得しようとしました。しかし、どうすればその値をfalseに変更できますか?

あなたが話している要素はここにあります:

    <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);
于 2013-03-08T17:56:27.297 に答える