1

simplexml_load_stringを使用して以下の XML から "TagOne" (つまり foo) と TagTwo (つまり bar) の値を取得するにはどうすればよい ですか? タグの「ns」という名前空間に困惑しています。

<?xml version="1.0" encoding="UTF-8"?>

<SOAP-ENV:Body>

    <ns:ExampleInterface_Output xmlns:ns="http://example.com/interfaces">
        <ns:TagOne>Foo</ns:TagOne>
        <ns:TagTwo>Bar</ns:TagTwo>
    </ns:ExampleInterface_Output>

</SOAP-ENV:Body>

ご親切にありがとうございました!

4

2 に答える 2

0

次のように、「ns」名前空間を simplexml_load_string に宣言できます。

$xml = simplexml_load_string($string, "SimpleXMLElement", 0, "ns", TRUE);

これは、"ns" が名前空間のプレフィックス (名前空間の URL ではなく) であることを示しています。詳細については、simplexml_load_string の PHP ドキュメント ページを参照してください。

もう 1 つの問題はBody、XML のどこにも宣言されていない "SOAP-ENV" プレフィックスが要素に含まれているため、これに関する警告が表示されることです。ただし、 の値は次の$xmlような構造のオブジェクトになります。

SimpleXMLElement Object (
    [ExampleInterface_Output] => SimpleXMLElement Object (
        [TagOne] => Foo
        [TagTwo] => Bar
    )
)

しかし、警告はさておき、これはまさにあなたが必要としているものかもしれません。Body警告が問題になる場合は、要素の開始タグと終了タグから「SOAP-ENV」プレフィックスを削除するだけです。

于 2013-11-10T11:21:46.190 に答える