【问题标题】:error parsing xml response string in php在php中解析xml响应字符串时出错
【发布时间】:2013-09-19 09:38:08
【问题描述】:
<?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 字符串

我想得到的是来自rs:data节点的ItemCount属性

我正在尝试的是

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

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

请帮助我,因为我是 Drupal PHP 的新手,以正确的方式从 rs:data 节点获取 itemcount 属性的值。即使使用simplexml,我也尝试了很多方法,但都没有奏效,请分享代码sn-p

谢谢

【问题讨论】:

  • 看起来ows_MetaInfo-属性缺少结束撇号?
  • 其实那个节点有太多的数据我刚刚从那个节点删除了过多的数据属性,因为这不相关,否则xml很好

标签: php xml drupal


【解决方案1】:

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

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

working example

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-09-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多