Php 读取名称空间Simplexml中的节点

Php 读取名称空间Simplexml中的节点,php,namespaces,simplexml,xml-namespaces,Php,Namespaces,Simplexml,Xml Namespaces,我有以下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> &

我有以下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>

231384
我如何读取数据之间

我有下面的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;
}


?> 
getnamespace(true);
//现在我们没有硬编码的URL
$diffgr=$entry->children($namespaces['diffgr']);
echo$diffgr->diffgram->dsAanbod->Pand->PandID;
}
?> 
但这不起作用

有人能帮我访问一个节点吗?它是名称空间元素的子节点


亲切的问候

哦,从哪里开始。此工作代码可能会说明一些问题:

<?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;
   }
children('diffgr',true)作为$diffgr){
$weirdemptynamespace=$diffgr->children(“”,true);
echo$weirdemptynamespace->dsAanbod->Pand->PandID;
}
列举几个问题:

<?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;
   }
  • xmlns=“”
    与没有名称空间不同,在我看来,只是。。。。嗯,很奇怪
  • 您的
    foreach
    过早(
    children('diffgr')
    应在根元素(
    Dataset
    )上调用)
  • 如果您只对名称空间前缀感兴趣,只需将
    children()
    的第二个参数设置为
    true

  • 呵呵,在某种程度上,我很高兴那里少了一个
    xmlns=“”
    ,然后我想;)
    foreach($weirdemptynamespace->dsAanbod->pandas$kot){echo$kot->PandID;}
    应该这样做吗?