我的XML文件如下:
<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>
我无法获得Projectinformation的子注释。我想获得详细信息和项目边界的所有属性。这个东西在Java中非常容易,但我知道如何用PHP做到这一点。 我获取项目信息子代的代码如下:
$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>";
}
答案 0 :(得分:0)
试试这个。
$x = $xmlDoc->getElementsByTagName('ProjectInformation');
foreach ($x->childNodes as $nodename) {
if( $nodename->nodeName == 'FileHeader' ){
echo $nodename->nodeName. " - " . $nodename->nodeValue."<br>";
}
}
$nodename->nodeName
保存所有子节点名称,如FileHeader, Details, etc.
答案 1 :(得分:0)
你应该使用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 ";
}
作为更通用的答案,您可以使用:
foreach($xml->ProjectInformation->children() as $child)
{
foreach($child->attributes() as $key => $value)
{
echo "$key : $value ";
}
}
您也可以使用xpath,如评论中所述。