douzhuo1853 2013-09-17 09:50
浏览 60
已采纳

如何用php获取XML的标记名?

My XMLfile is as follows:

<Project>
  <ProjectInformation>
    <FileHeader>IDGIS_PROJECT</FileHeader>
    <Details ProjectID="0" ProjectName="" Description="" StartDate="02/05/2012 00:00:00 AM" OwnerShip="" LastModified="01/01/0001 00:00:00 AM" Datum="WGS_84" Projection="CYL" NoSignificantDecimals="3" ZoomCurrent="303601" RasterHeight="0" Background="-1">Project Details</Details>
    <ProjectBounds XMin="25.4579486950873" YMin="44.7183808936148" XMax="26.5953949808977" YMax="45.5345534542584" ExtentBounds="no">Bounds</ProjectBounds>
  </ProjectInformation>
  <Layers>
    <Layer ID="2" Description="" MinZoom="1" MaxZoom="1000000000" Visible="3" RemotHostType="LocalFile" RemotHost="" FolderName="Prahova_Highways" Path="" LayerStatus="ReadWrite">
</Layers>

I am unable to get child notes of Projectinformation. i want to get all attributes of Details and Project bounds. This thing is very easy in Java but i dunt know how to do it with php. My code for getting childnotes of projectinformation is as follows:

$xmlDoc = new DOMDocument();
$xmlDoc->load('oglPrahova/prahova.GIS');

$x=$xmlDoc->documentElement;
var_dump($x);

$x = $xmlDoc->->getElementsByTagName('ProjectInformation');  

foreach ($x->childNodes AS $item) {
    print $i->nodeName . " = " . $item->nodeValue . "<br>";
}
  • 写回答

2条回答 默认 最新

  • dsj2014 2013-09-17 10:06
    关注

    You should use SimpleXML :

    $xml = new SimpleXMLElement(
    '<Project>
        <ProjectInformation>
            <FileHeader>IDGIS_PROJECT</FileHeader>
            <Details ProjectID="0" ProjectName="" Description="" StartDate="02/05/2012 00:00:00 AM" OwnerShip="" LastModified="01/01/0001 00:00:00 AM" Datum="WGS_84" Projection="CYL" NoSignificantDecimals="3" ZoomCurrent="303601" RasterHeight="0" Background="-1">Project Details</Details>
            <ProjectBounds XMin="25.4579486950873" YMin="44.7183808936148" XMax="26.5953949808977" YMax="45.5345534542584" ExtentBounds="no">Bounds</ProjectBounds>
        </ProjectInformation>
        <Layers>
            <Layer ID="2" Description="" MinZoom="1" MaxZoom="1000000000" Visible="3" RemotHostType="LocalFile" RemotHost="" FolderName="Prahova_Highways" Path="" LayerStatus="ReadWrite" />
        </Layers>
    </Project>');
    
    foreach($xml->ProjectInformation->Details->attributes() as $key => $value)
    {
        echo "$key : $value ";
    }
    foreach($xml->ProjectInformation->ProjectBounds->attributes() as $key => $value)
    {
        echo "$key : $value ";
    }
    

    As a more generic answer, you can use :

    foreach($xml->ProjectInformation->children() as $child)
    {
        foreach($child->attributes() as $key => $value)
        {
            echo "$key : $value ";
        }
    }
    

    You can also use xpath, as said in a comment.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥20 基于MSP430f5529的MPU6050驱动,求出欧拉角
  • ¥20 Java-Oj-桌布的计算
  • ¥15 powerbuilder中的datawindow数据整合到新的DataWindow
  • ¥20 有人知道这种图怎么画吗?
  • ¥15 pyqt6如何引用qrc文件加载里面的的资源
  • ¥15 安卓JNI项目使用lua上的问题
  • ¥20 RL+GNN解决人员排班问题时梯度消失
  • ¥60 要数控稳压电源测试数据
  • ¥15 能帮我写下这个编程吗
  • ¥15 ikuai客户端l2tp协议链接报终止15信号和无法将p.p.p6转换为我的l2tp线路