0

PHPを使用しているResponseCodeとResponseDescriptionを取得する必要があります

<?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>
    <ProcessPaymentResponse xmlns="https://services.incard.com.au">
      <ProcessPaymentResult>
        <ResponseCode>string</ResponseCode>
        <ResponseDescription>string</ResponseDescription>
      </ProcessPaymentResult>
    </ProcessPaymentResponse>
  </soap:Body>
</soap:Envelope>
4

4 に答える 4

0

これを試して:

<?php
$str = '<?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>
    <ProcessPaymentResponse xmlns="https://services.incard.com.au">
      <ProcessPaymentResult>
        <ResponseCode>string</ResponseCode>
        <ResponseDescription>string</ResponseDescription>
      </ProcessPaymentResult>
    </ProcessPaymentResponse>
  </soap:Body>
</soap:Envelope>';

$xml = simplexml_load_string( $str );
$xml->registerXPathNamespace( 'soap', 'http://schemas.xmlsoap.org/soap/envelope/' );
$result = $xml->xpath('//soap:Body');

foreach ($result as $body) {
  echo $body->ProcessPaymentResponse->ProcessPaymentResult->ResponseCode . "<br />";
  echo $body->ProcessPaymentResponse->ProcessPaymentResult->ResponseDescription . "<br />";
}
?>

お役に立てれば。

于 2012-05-02T05:27:40.160 に答える
0

phpxmlパーサーが必要です。

使用するsimplexml

詳細はこちら: http: //in2.php.net/manual/en/simplexml.examples.php

于 2012-05-02T05:14:33.023 に答える
0

彼らがあなたにSOAPサービスを公開していると仮定して、あなたはphpSoapClientの使用を検討するかもしれません。

あなたができる他のいくつかのことがあることに失敗する:

  1. XPathを使用して値を取得します:http: //php.net/manual/en/simplexmlelement.xpath.php

  2. phpのXML解析関数の1つを使用して、XMLを解析し、値を取得します。http ://www.php.net/manual/en/function.xml-parse-into-struct.php

于 2012-05-02T05:17:43.740 に答える
0

new .xml に xml データを配置し、データの単一フィールドが必要な場合は以下のコードを実行します

 <?php

$file="new.xml";

function contents($parser, $data){ 
    echo $data; 
} 

function startTag($parser, $data){ 
    echo "<b>"; 
} 

function endTag($parser, $data){ 
    echo "</b><br />"; 
} 

$xml_parser = xml_parser_create(); 

xml_set_element_handler($xml_parser, "startTag", "endTag"); 

xml_set_character_data_handler($xml_parser, "contents"); 

$fp = fopen($file, "r"); 

$data = fread($fp, 80000); 

if(!(xml_parse($xml_parser, $data, feof($fp)))){ 
    die("Error on line " . xml_get_current_line_number($xml_parser)); 
} 

xml_parser_free($xml_parser); 

fclose($fp); 

$xml = simplexml_load_string( $data);
$xml->registerXPathNamespace( 'soap', 'http://schemas.xmlsoap.org/soap/envelope/' );
$result = $xml->xpath('//soap:Body');

foreach ($result as $body) {
  echo $body->ProcessPaymentResponse->ProcessPaymentResult->ResponseCode . "<br />";
  echo $body->ProcessPaymentResponse->ProcessPaymentResult->ResponseDescription . "<br />";
}
?>

n個のデータが必要な場合は、これを試してください

<?php
$file="new.xml";

function contents($parser, $data){ 
    echo $data; 
} 

function startTag($parser, $data){ 
    echo "<b>"; 
} 

function endTag($parser, $data){ 
    echo "</b><br />"; 
} 

$xml_parser = xml_parser_create(); 

xml_set_element_handler($xml_parser, "startTag", "endTag"); 

xml_set_character_data_handler($xml_parser, "contents"); 

$fp = fopen($file, "r"); 

$data = fread($fp, 80000); 

if(!(xml_parse($xml_parser, $data, feof($fp)))){ 
    die("Error on line " . xml_get_current_line_number($xml_parser)); 
} 

xml_parser_free($xml_parser); 

fclose($fp); 
    $xml = simplexml_load_string($data); 
    $xml->registerXPathNamespace('soap:Envelope', 'http://schemas.xmlsoap.org/soap/envelope/');
    foreach ($xml->xpath('//soap:Envelope:ResponseCode') as $item) {
        echo (string) $item; 
    }
    foreach ($xml->xpath('//soap:Envelope:ResponseDescription') as $item) {
        echo (string) $item; 
    }
    ?>
于 2012-05-02T06:06:28.047 に答える