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文字列を知っていることだけです。

また、そのメソッドの2番目のパラメーターをに設定し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 に答える