2

如何解析如下所示的文档?

<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>),但这只有在某个 URL 有 xsd 时才有效。

4

1 回答 1

1

请参阅该方法->children()文档。命名空间标识符不必指向 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;
于 2012-10-23T15:04:28.820 回答