PHPでXMLノードの値を変更する際に、いくつかの問題があります。PHP XMLノードの値を変更する
私のXMLは、次の
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<ProcessTransaction
xmlns="http://example.com">
<TransactionRequest
xmlns="http://example.com">
<Header>
<RequestType>SALE</RequestType>
<RequestMethod>SYNCHRONOUS</RequestMethod>
<MerchantInfo>
<PosName>kwstasna</PosName>
<PosID>1234</PosID>
</MerchantInfo>
</Header>
</TransactionRequest>
</ProcessTransaction>
</soap:Body>
</soap:Envelope>
であると私はPosName
とPosID
を変更したいです。 XMLはPOST要求から受信されます。 もし私がprint_r($REQUEST['xml']
の場合は、テキストの値を取得します。
そして、私が試したことは
$posid = '321';
$posname = 'nakwsta';
$result = $xml->xpath("/soap:Envelope/soap:Body/ProcessTransaction/TransactionRequest/Header/MerchantInfo");
$result[0]->PosID = $posid;
$result[0]->PosName = $posname;
echo $result;
以下ですが、私は空の配列Array[]
を取得し、私は私のミスは、例えば<soap:Envelope
の値であると思います。 同じ問題を抱え、それを解決する方法を見つけた人は誰ですか?
ありがとうございます。
正しいパス(http://php.net/manual/en/simplexmlelement.registerxpathnamespace)を得るには、名前空間を$ xmlに登録する必要があります。php) – Edwin
@Edwin存在する最初の部分3つの名前空間何をすべきですか? –
これはあなたが使用しようとしているノードであるため、 'xmlns =" http://example.com "'を登録する必要があります(マニュアルの最初の例を参照)。 – Edwin