在PHP5中解析复杂的XML [英] Parsing complex XML in PHP5

查看:204
本文介绍了在PHP5中解析复杂的XML的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

您好,这是我的第一篇文章. 我正在尝试使用php解析xml,但是我坚持使用它

Hello this is my first post. i'm trying to parse an xml using php, but i'm stuck with it

我的xml示例:

<xml xmlns:dt='uuid:C2F41010-65B3-11d1-A29F-00AA00C14882'
     xmlns:rs='urn:schemas-microsoft-com:rowset'
     xmlns:z='#RowsetSchema'>
<s:Schema id='RowsetSchema'>
   <s:ElementType name='row' content='eltOnly' rs:CommandTimeout='30'>
      <s:AttributeType name='ows_LinkTitle' rs:name='Phone Number*' rs:number='1'>
         <s:datatype dt:type='string' dt:maxLength='512' />
      </s:AttributeType>
      <s:AttributeType name='ows_GSM_x0020_PUK' rs:name='GSM PUK' rs:number='2'>
         <s:datatype dt:type='string' dt:maxLength='512' />
      </s:AttributeType>
   </s:ElementType>
</s:Schema>
<rs:data>
   <z:row ows_LinkTitle='628558621183' ows_GSM_x0020_PUK='41016732'/>
   <z:row ows_LinkTitle='628558621181' ows_GSM_x0020_PUK='21783670'/>
</rs:data>
</xml>

我正试图从每个'z:row'中获取值 任何帮助,我们将不胜感激.谢谢

i'm trying to get the value from each of 'z:row' Any help is very appreciated. Thanks

我正在尝试此代码,但它不起作用

i'm trying this code and it doesnt work

$xml_all = simplexml_load_string($xmlnya);

echo '<ol>';
foreach ($xml_all->xml->rs->z as $zrow)
{
 echo '<li> ows_LinkTitle: '.$zrow['ows_LinkTitle'];
 echo '</li>';
}
echo '</ol>';

推荐答案

下面的摘录假定(固定的)XML文档是$xml中的字符串.

The snippets below assume the (fixed) XML document is a string in $xml.

SimpleXML

$xml  = simplexml_load_string($xml);
$rows = $xml->children('rs', TRUE)->data->children('z', TRUE)->row;
foreach ($rows as $row) {
    $attributes = $row->attributes();
    $link_title = (string) $attributes->ows_LinkTitle;
    $gsm_puk    = (string) $attributes->ows_GSM_x0020_PUK;
    var_dump($link_title, $gsm_puk);
}

要阅读: SimpleXML用法 SimpleXMLElement::attributes() .

To read: SimpleXML usage, SimpleXMLElement::children(), SimpleXMLElement::attributes().

DOM

$doc = new DOMDocument;
$doc->loadXML($xml);
$rows = $doc->getElementsByTagNameNS('#RowsetSchema', 'row');
foreach ($rows as $row) {
    $link_title = $row->getAttribute('ows_LinkTitle');
    $gsm_puk    = $row->getAttribute('ows_GSM_x0020_PUK');
    var_dump($link_title, $gsm_puk);
}

要阅读: DOMDocument::getElementsByTagNameNS()

To read: DOMDocument::getElementsByTagNameNS(), DOMElement::getAttribute().

这篇关于在PHP5中解析复杂的XML的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆