-1

我正在使用这个XML 到 Json Zend 模块。

问题是我可以从我连接的 web 服务接收到格式错误的 XML 字符串。当在fromXml Zend 方法中处理这个 XML 时,它会抛出一个警告。

所以我想在调用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 回答