-1

このXMLtoJsonZendモジュールを使用しています。

問題は、接続しているWebサービスから不正な形式のXML文字列を受け取る可能性があることです。このXMLがfromXmlZendメソッドで処理されると、警告がスローされます。

そこで、 fromXml関数を呼び出す前にXMLを検証したいと思います。XMLが有効かどうかはどうすればわかりますか?Zendを使用することをお勧めしますか?

次のようにコードを使用しようとしましたが、まだ成功していません:(このXML文字列はfromXmlを使用すると機能します)

<?php
$xml1 = 'asdf';
$xml2 = '<?xml version="1.0" encoding="iso-8859-1" ?>
<sroxml>
   <version>1.0</version>
   <quantity>1</quantity>
   <SearchType>Objetcs List</SearchType>
   <ResultType>All events</ResultType>
     <object>
       <number>AA299100299BB</number>
       <event>
          <type>BDI</type>
          <status>01</status>
          <date>07/01/2013</date>
          <hour>12:12</hour>
          <description>Received</description>
          <receiver>MARY WILLIAN                                      </receiver>
          <document>AA. 111639676            </document>
          <comment>                         </comment>
          <local>Some local</local>
          <code>11151970</code>
          <city>Some City</city>
          <uf>AB</uf>
          <sto>11102272</sto>
      </event>
     </object>
</sroxml>';

$validator = new DOMDocument();
$validator->loadXML($xml2, LIBXML_DTDLOAD|LIBXML_DTDVALID|LIBXML_ERR_WARNING |LIBXML_DTDATTR);
echo "<br>testing<pre>"; var_dump($validator->validate()); echo "</pre><br>";
4

1 に答える 1

5
$dom = new DOMDocument();
$dom->loadXML($xml_string);
if ($dom->validate()) {
    echo "This document is valid!\n";
}

文字列がXMLとして解析可能かどうかをテストするには、次のことを試してください。

simplexml_load_string(($string)

simplexml_load_stringは、そうでない場合はfalseを返し、すべて問題がない場合はオブジェクトを返します。

于 2013-02-27T19:44:29.150 に答える