2017-03-26 16 views
0
私は、次のXMLファイルを使用して解析しています

SimpleXMLを持つ名前空間の項目を解析する - >子供

testxml.xml

<?xml version="1.0" encoding="UTF-8" standalone="no"?><document> 
<node id="n0"> 
    <data key="d6"> 
    <y:GenericNode configuration="TEXT I WANT TO GET"> 
     <y:Geometry height="56.030557066666574" width="181.68810666666667" x="638.4599149206349" y="143.24969103333325"/> 
     <y:Fill color="#FFCC66" color2="#FF9900" transparent="false"/> 
     <y:BorderStyle color="#000000" type="line" width="1.0"/> 
     <y:NodeLabel alignment="center" autoSizePolicy="node_width" configuration="CroppingLabel" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="34.265625" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#000000" verticalTextPosition="bottom" visible="true" width="181.68810666666667" x="0.0" y="10.882466033333287">Text I want to Get<y:LabelModel> 
      <y:SmartNodeLabelModel distance="4.0"/> 
     </y:LabelModel> 
     <y:ModelParameter> 
      <y:SmartNodeLabelModelParameter labelRatioX="-0.5" labelRatioY="0.0" nodeRatioX="-0.5" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/> 
     </y:ModelParameter> 
     </y:NodeLabel> 
    </y:GenericNode> 
    </data> 
</node> 

私は属性のほんの一握りに興味を持っています、すなわち、以下のコードで取得できるノードID、データキーです。しかし、y:namespaceに移動すると、何も得られません。

xmlparser.php

<?php 
$xml = simplexml_load_file("testxml.xml") 
or die("Error: Cannot create object - check that the XML file exists and is    
not corrupted"); print_r($xml); 
echo $xml->node[0]['id']; // This works 
echo $xml->node[0]->data[0]['key']; // This works 

echo $xml->children('y', true)->GenericNode->attributes()->configuration; // Nothing 

echo $xml->children('y', true)->GenericNode->NodeLabel; // Nothing 

?> 

私は私が子供のアプローチを採用しているに基づいて類似した問題について、前回の答え、を読んできました。しかし、私はこれを動作させることはできません。ネームスペースの宣言やxpathアプローチなど、他のアプローチを実装する方法はわかりません。

ご協力いただければ幸いです。

答えて

0

あなたは$xmlから直接アクセスすべきではありませんのでy:GenericNodeは、ルート要素の直接の子ではないためです。

$xml->node->data->children('y', true)->GenericNode->attributes()->configuration; 

簡単なテスト:https://eval.in/761412

関連する問題