これが私を狂わせているので、誰かが助けてくれることを願っています。
PHP を使用して既存の XML ファイルを更新する必要があります。いずれかのノードの値が何かに等しい場合、テキストを含む新しい子要素を追加したいと考えています。
XML ファイルの例を次に示します。
<properties>
<property>
<address>
<street>Example Road</street>
<locality>Fitzrovia</locality>
<town>London</town>
<postcode>NW1</postcode>
</address>
</property>
<property>
<address>
<street>Default Street</street>
<locality>Sample</locality>
<town>London</town>
<postcode>EC1</postcode>
</address>
</property>
</properties>
私が現在持っているPHP:
$dom = new DOMDocument();
$dom->load('http://example.com/example.xml');
$xpath = new DOMXPath($dom);
$postcode = $xpath->query('property/address/postcode');
foreach($postcode as $region)
{
$r = $region->nodeValue;
if (preg_match('/^nw(?=[0-9]*)/i', $r)) {
$region->nodeValue = 'North West London';
}
else if (preg_match('/^n(?=[0-9]*)/i', $r)) {
$region->nodeValue = 'North London';
}
else if (preg_match('/^e(?=[0-9]*)/i', $r)) {
$region->nodeValue = 'East London';
}
else if (preg_match('/^se(?=[0-9]*)/i', $r)) {
$region->nodeValue = 'South East London';
}
else if (preg_match('/^sw(?=[0-9]*)/i', $r)) {
$region->nodeValue = 'South West London';
}
else if (preg_match('/^w(?=[0-9]*)/i', $r)) {
$region->nodeValue = 'West London';
}
else if (preg_match('/^ec(?=[0-9]*)/i', $r)) {
$region->nodeValue = 'East Central London';
}
else if (preg_match('/^wc(?=[0-9]*)/i', $r)) {
$region->nodeValue = 'West Central London';
}
else {
$region->nodeValue = 'Outer London';
}
}
$dom->save('export.xml');
私がやろうとしているのは、郵便番号が特定の値と等しい場合、新しい子ノードが「住所」ノードにテキストとともに追加されることです。
新しい子ノードを生成できるという問題がいくつか発生しましたが、各「プロパティ」ノード内に 1 つのインスタンスが存在するのではなく、多数の子ノードが XML ファイルの 1 つの部分にのみ追加されます。
何らかの支援があれば本当にできるので、これが理にかなっていることを願っています。
前もって感謝します :)