2017-02-17 21 views
1

phpでXML要素から属性値型(ss:Name)を取得したいとします。 しかし、それは動作しません。phpでxml要素から属性値型(ss:Name)を取得する方法

これは私のxmlファイルである:名前値:

<?xml version="1.0"?> 
<?mso-application progid="Excel.Sheet"?> 
<Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet" 
xmlns:o="urn:schemas-microsoft-com:office:office" 
xmlns:x="urn:schemas-microsoft-com:office:excel" 
xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet" 
xmlns:html="http://www.w3.org/TR/REC-html40" 
xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
<Worksheet ss:Name="097-097-024"> 
</Worksheet> 
</Workbook> 

と私のPHPソース

<?php 
$xml = simplexml_load_file($fichier); 
$attr = $xml->Worksheet->Workbook->attributes(); 
echo $attr['ss:Name']; 
?> 

あなたは私のSSを取得するために助けることができますか?

おかげ

答えて

0

あなたの属性ssの接頭辞が名前空間です。

あなたはこのようなAttributes()の引数としてそれを要求することによって、その名前空間の属性をつかむことができます。

$ノード - >属性(「URN:スキーマ - マイクロソフト - com:office:スプレッドシート」);

$xml = '<?xml version="1.0"?> 
<?mso-application progid="Excel.Sheet"?> 
<Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet" 
xmlns:o="urn:schemas-microsoft-com:office:office" 
xmlns:x="urn:schemas-microsoft-com:office:excel" 
xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet" 
xmlns:html="http://www.w3.org/TR/REC-html40" 
xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
<Worksheet ss:Name="097-097-024"> 
</Worksheet> 
</Workbook>'; 

$xml = simplexml_load_string($xml); 
foreach($xml->Worksheet->Attributes('urn:schemas-microsoft-com:office:spreadsheet') as $key=>$val) { 
    echo "$key: $val\n"; 
} 

出力

名:097-097-024

はまたあなたの一番上のノードがWorksheetWorksheet->Workbook

ではないことに注意してください
関連する問題