0

私は次のxmlコードを持っています:

ファイル 1.xml

<?xml version="1.0" encoding="utf-8"?>
 <DataSet xmlns="">
  <diffgr:diffgram xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns:diffgr="urn:schemas-microsoft-com:xml-diffgram-v1">
   <dsAanbod>
    <Pand diffgr:id="Pand1" msdata:rowOrder="0" diffgr:hasChanges="inserted">
      <PandID>231384</PandID>
    </Pand>
   </dsAanbod>
 </diffgr:diffgram>
</DataSet>

間のデータを読み取るにはどうすればよいですか

次のphpコードがありました

<?php 


    $xml_url = "1.xml";
    $xml = simplexml_load_file($xml_url);

    foreach ($xml as $entry){

       //Use that namespace
       $namespaces = $entry->getNameSpaces(true);
       //Now we don't have the URL hard-coded
       $diffgr = $entry->children($namespaces['diffgr']); 
       echo $diffgr->diffgram->dsAanbod->Pand->PandID;
}


?> 

しかし、それはうまくいきません。

名前空間要素の子であるノードにアクセスするのを手伝ってくれませんか。

敬具

4

1 に答える 1

2

ああ、どこから始めましょうか。この作業コードは、いくつかの問題を示している可能性があります。

<?php
    $xml_url = "1.xml";
    $xml = simplexml_load_file($xml_url);
    foreach($xml->children('diffgr',true) as $diffgr){
            $weirdemptynamespace = $diffgr->children('',true);
            echo $weirdemptynamespace->dsAanbod->Pand->PandID;
   }

いくつかの問題を挙げると:

  1. xmlns=""名前空間がないことと同じではなく、私の意見では、ただ....まあ、奇妙です。
  2. あなたforeachは時期尚早でした (children('diffgr')はルート要素 ( ) で呼び出す必要がありますDataset)。
  3. 名前空間プレフィックスのみに関心がある場合は、 の 2 番目の引数を に設定するだけchildren()ですtrue
于 2012-07-04T16:49:15.300 に答える