1

使用しているAPIから次のものが返されます..ただし、SIMPLEXMLを使用すると、値にアクセスできません:

<?xml version="1.0" encoding="utf-16"?>
<Response Version="1.0">
   <DateTime>2/13/2013 10:37:24 PM</DateTime>
   <Contact_ID>151-233-DD</Contact_ID>
   <Quote_ID>ojc332-ewied-23e3ed</Quote_ID>
   <Status>Failure</Status>
   <Reason>Incorrect Contact ID</Reason>
</Response>

私はこれを設定しています:

$variable = new SimpleXMLElement($results);

SIMPLEXML は、$variable->DateTime であると予想されるものの代わりに、次のように表示されます。

SimpleXMLElement Object ( [0] => 2/13/2013 10:37:24 PM 151-233-DD 0jc332-ewied-23e3ed Failure Incorrect Contract ID ) 

どんな助けでも大歓迎です

4

2 に答える 2

6

コンテンツutf-16utf-8.

そのため、エンコード タイプを変更する必要があります。

$string = '<?xml version="1.0" encoding="utf-16"?>
  <Response Version="1.0">
  <DateTime>2/13/2013 10:37:24 PM</DateTime>
  <Contact_ID>151-233-DD</Contact_ID>
  <Quote_ID>ojc332-ewied-23e3ed</Quote_ID>
  <Status>Failure</Status>
  <Reason>Incorrect Contact ID</Reason>
 </Response>'; 
$xml = simplexml_load_string(preg_replace('/(<\?xml[^?]+?)utf-16/i', '$1utf-8', $string)); 

コードパッドのデモ

またutf8_encode、を使用して行うこともできます。

$xml = simplexml_load_string(utf8_encode($string)); 
于 2013-02-14T06:58:03.210 に答える
0

XML要素を1つだけ構築しています(クラスの名前をヒントにしてください)。文字列全体を XML ドキュメントとしてロードする必要があります。方法は次のとおりです。

<?php

$result= <<<XML
<?xml version="1.0" encoding="utf-8"?>
<Response Version="1.0">
   <DateTime>2/13/2013 10:37:24 PM</DateTime>
   <Contact_ID>151-233-DD</Contact_ID>
   <Quote_ID>ojc332-ewied-23e3ed</Quote_ID>
   <Status>Failure</Status>
   <Reason>Incorrect Contact ID</Reason>
</Response>
XML;

$dom= new DOMDocument();
$dom->loadXML($result, LIBXML_NOBLANKS);

次に、DOM インターフェイスを使用して、ドキュメント内のさまざまなコンポーネントにアクセスできます。

例えば

$dates = dom->getElementsByTagName('DateTime');

DateTimeこれにより、すべての要素を含む配列がフェッチされます。

編集

おっと -$datesのオブジェクトになりますDOMNodeList

その後、さまざまなメソッドを使用してノードにアクセスし、属性を取得できます。

于 2013-02-14T07:04:30.380 に答える