如何解析如下所示的文档?
<xml 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'>
<s:Schema id='RowsetSchema'>
<s:ElementType name='row' content='eltOnly'>
<s:AttributeType name='StMovement' rs:number='1' rs:nullable='true' rs:writeunknown='true'>
<s:datatype dt:type='number' rs:dbtype='numeric' dt:maxLength='19' rs:scale='0' rs:precision='28' rs:fixedlength='true'/>
</s:AttributeType>
</s:ElementType>
</s:Schema>
<rs:data>
<z:row StMovement='21123'/>
</rs:data>
我知道有类似.children(<schemaurl>)
的内容,但只有在某个网址上有xsd时才有效。
答案 0 :(得分:1)
请参阅the ->children()
method的文档。命名空间标识符不必指向XSD以便以这种方式使用,您只需要知道要传入的URI字符串。
您还可以将该方法的第二个参数设置为true
,并使用命名空间的本地别名/前缀,这在理论上不太可靠,但在实践中通常很好。
在您的情况下(如果您添加上面示例中缺少的</xml>
),以下两种方法都可以正常工作:
echo (string)$sx->children('uuid:BDC6E3F0-6DA3-11d1-A2A3-00AA00C14882')->Schema->attributes()->id;
echo (string)$sx->children('s', true)->Schema->attributes()->id;