在php中解析xml响应字符串时出错

时间:2013-09-19 09:38:09

标签: php xml drupal

<?xml version="1.0" encoding="utf-8"?> 
<soap:Envelope 
    xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
    <soap:Body> 
        <GetListItemsResponse xmlns="http://schemas.microsoft.com/sharepoint/soap/"> 
            <GetListItemsResult> 
                <listitems xmlns:s='uuid:BDC6E3F0-6DA3-11d1-A2A3-00AA00C14882' 
                           xmlns:dt='uuid:C2F41010-65B3-11d1-A29F-00AA00C14882' 
                           xmlns:rs='urn:schemas-microsoft-com:rowset' 
                           xmlns:z='#RowsetSchema'> 
                    <rs:data ItemCount="2"> 
                        <z:row ows_ID='1' ows_MetaInfo='1;#vti_parserversion:SR|14.0.0.6134&#13;&#10;' /> 
                            <z:row ows_ID='2' ows_MetaInfo='2;#vti_parserversion:SR|14.0.0.6134&#13;&#10;' />
                    </rs:data> 
                </listitems> 
            </GetListItemsResult> 
        </GetListItemsResponse> 
    </soap:Body> 
</soap:Envelope>

XML字符串

我想从ItemCount节点

获取rs:data属性

我正在尝试的是

$dom = new DOMDocument; $dom->loadXML( $result->data ); $xpath = new DOMXPath($dom);

$seats = $xpath->query('//rs:data[@ItemCount]'); print_r($seats);

请帮助我,因为我是Drupal PHP的新手,正确地从itemcount节点获取rs:data属性的值。我尝试了很多方法甚至使用simplexml但没有一个工作,请分享代码片段

谢谢

1 个答案:

答案 0 :(得分:1)

我认为您不需要将其解析为xml,以获得一个值,我认为最好像这样使用preg_match_all

preg_match_all('/rs:data ItemCount="(.*?)"/', $string, $match);

working example