2010-11-01 10 views
0

J'ai un fichier xml dans ce format:lecteur XML PHP types de champs

<?xml version="1.0" encoding="UTF-8"?> 
<?mso-application progid="Excel.Sheet"?> 

<Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet" xmlns:html="http://www.w3.org/TR/REC-html40" xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns:o="urn:schemas-microsoft-com:office:office"> 
<Styles> 
<Style ss:Name="Normal" ss:ID="Default"> 
<Alignment ss:Vertical="Bottom"/> 
<Borders/> 
<Font/> 
<Interior/> 
<NumberFormat/> 
<Protection/> 
</Style> 
<Style ss:Name="FormatedNumberBorderPatern" ss:ID="FormattedNumberBorderPatern"> 
<Alignment ss:WrapText="1" ss:Vertical="Center"/> 
<NumberFormat/> 
<Borders> 
<Border ss:Weight="1" ss:LineStyle="Continuous" ss:Position="Bottom"/> 
<Border ss:Weight="1" ss:LineStyle="Continuous" ss:Position="Left"/> 
<Border ss:Weight="1" ss:LineStyle="Continuous" ss:Position="Right"/> 
<Border ss:Weight="1" ss:LineStyle="Continuous" ss:Position="Top"/> 
</Borders> 
</Style> 
<Style ss:ID="s40"> 
<Alignment ss:Vertical="Bottom"/> 
<Font ss:Bold="1" ss:Color="#7A2A29" ss:Size="12" x:Family="Swiss" x:CharSet="204"/> 
</Style> 
<Style ss:ID="s25"> 
<Alignment ss:WrapText="1" ss:Vertical="Center" ss:Horizontal="Center"/> 
<Borders> 
<Border ss:Color="#000000" ss:Weight="1" ss:LineStyle="Continuous" ss:Position="Bottom"/> 
<Border ss:Color="#000000" ss:Weight="1" ss:LineStyle="Continuous" ss:Position="Left"/> 
<Border ss:Color="#000000" ss:Weight="1" ss:LineStyle="Continuous" ss:Position="Right"/> 
<Border ss:Color="#000000" ss:Weight="1" ss:LineStyle="Continuous" ss:Position="Top"/> 
</Borders> 
<Font ss:Bold="1" ss:FontName="Arial Unicode MS"/> 
</Style> 
<Style ss:ID="m155750108"> 
<Alignment ss:WrapText="1" ss:Vertical="Bottom"/> 
<Borders> 
<Border ss:Color="#000000" ss:Weight="1" ss:LineStyle="Continuous" ss:Position="Bottom"/> 
<Border ss:Color="#000000" ss:Weight="1" ss:LineStyle="Continuous" ss:Position="Left"/> 
<Border ss:Color="#000000" ss:Weight="1" ss:LineStyle="Continuous" ss:Position="Right"/> 
<Border ss:Color="#000000" ss:Weight="1" ss:LineStyle="Continuous" ss:Position="Top"/> 
</Borders> 
<Font ss:FontName="Arial Unicode MS"/> 
</Style> 
<Style ss:ID="empty"> 
<Alignment ss:Horizontal="Right"/> 
<Borders> 
<Border ss:Color="#000000" ss:Weight="1" ss:LineStyle="Continuous" ss:Position="Bottom"/> 
<Border ss:Color="#000000" ss:Weight="1" ss:LineStyle="Continuous" ss:Position="Left"/> 
<Border ss:Color="#000000" ss:Weight="1" ss:LineStyle="Continuous" ss:Position="Right"/> 
<Border ss:Color="#000000" ss:Weight="1" ss:LineStyle="Continuous" ss:Position="Top"/> 
</Borders> 
<Font ss:Bold="1" ss:FontName="Arial Unicode MS"/> 
</Style> 
<Style ss:ID="s30"> 
<Alignment ss:WrapText="1" ss:Vertical="Center" ss:Horizontal="Left"/> 
<Borders> 
<Border ss:Color="#000000" ss:Weight="1" ss:LineStyle="Continuous" ss:Position="Bottom"/> 
<Border ss:Color="#000000" ss:Weight="1" ss:LineStyle="Continuous" ss:Position="Left"/> 
<Border ss:Color="#000000" ss:Weight="1" ss:LineStyle="Continuous" ss:Position="Right"/> 
<Border ss:Color="#000000" ss:Weight="1" ss:LineStyle="Continuous" ss:Position="Top"/> 
</Borders> 
<Font ss:FontName="Arial Unicode MS"/> 
</Style> 
</Styles> 
<Worksheet ss:Name="Information"> 
<Table border="1"> 
<Column ss:Span="1" ss:Width="192"/> 
<Row ss:Height="31.5" ss:AutoFitHeight="0"> 
<Cell ss:StyleID="s40"> 
<Data ss:Type="String">Обменни курсове за 29.10.2010</Data> 
</Cell> 
</Row> 
<Row/> 
<Row> 
<Cell ss:StyleID="s25"> 
<Data ss:Type="String">Валута</Data> 
</Cell> 
<Cell ss:StyleID="s25"> 
<Data ss:Type="String">Код</Data> 
</Cell> 
<Cell ss:StyleID="s25"> 
<Data ss:Type="String">За единици валута</Data> 
</Cell> 
<Cell ss:StyleID="s25"> 
<Data ss:Type="String">Лева (BGN)</Data> 
</Cell> 
<Cell ss:StyleID="s25"> 
<Data ss:Type="String">Обратен курс за 1 лев</Data> 
</Cell> 
</Row> 
<Row> 
<Cell ss:StyleID="s30"> 
<Data ss:Type="String">Австралийски долар</Data> 
</Cell> 
<Cell ss:StyleID="s30"> 
<Data ss:Type="String">AUD</Data> 
</Cell> 
<Cell ss:StyleID="FormattedNumberBorderPatern"> 
<Data ss:Type="Number">1</Data> 
</Cell> 
<Cell ss:StyleID="FormattedNumberBorderPatern"> 
<Data ss:Type="Number">1.37579</Data> 
</Cell> 
<Cell ss:StyleID="FormattedNumberBorderPatern"> 
<Data ss:Type="Number">0.726855</Data> 
</Cell> 
</Row> 

..et ainsi de suite. Je ne ai besoin de sortir des données après cette ligne:

<Cell ss:StyleID="s30"> 

Ce fichier XML est tiré d'une banque (informations sur les devises). Le premier champ est le nom de la devise en bulgare, le second est le code (USD pour un exemple), le troisième est le montant, quatrième est la valeur de la devise, cinquième est combien de la devise que vous pouvez acheter avec un lev bulgare (BGN est notre monnaie).

Je veux créer un convertisseur de devises, mais la mise en forme du XML me trouble. Quelqu'un peut-il me dire comment je peux tirer l'information sur toutes les devises? J'ai besoin de ces champs dans une table:

<Data ss:Type="String">Австралийски долар</Data> 
<Data ss:Type="String">AUD</Data> 
<Data ss:Type="Number">1</Data> 
<Data ss:Type="Number">1.37579</Data> 
<Data ss:Type="Number">0.726855</Data> 

Ces lignes se répètent (ainsi que les balises de cellules et de ligne) pour toutes les monnaies dans le fichier xml. Pourriez-vous s'il vous plaît me donner un exemple pour une monnaie unique? Comment puis-je traiter les données dans ces champs?

+1

Les banques centrales fournissent des taux Forex continuellement mis à jour dans des formats plus accessibles. S'il vous plaît voir [Comment mettre en œuvre le taux de change en PHP?] (Http://stackoverflow.com/questions/1973569/how-to-implement-exchange-rate-in-php/1973823#1973823) et [script PHP pour la conversion de devises ] (http://stackoverflow.com/questions/2635127/php-script-for-currency-conversion/2635428) – Gordon

Répondre

1

Le fichier est un fichier XML Excel2003, un format SpreadsheetML rarement utilisé introduit dans MS Excel 2003, puis supprimé en faveur de Microsoft Office Open XML SpreadsheetML introduit pour Excel2007. Normalement, le fichier est trouvé sous forme d'archive zip.

PHPExcel a un lecteur pour ce format. Je vous suggère soit d'utiliser PHPExcel lui-même pour lire les données du fichier, soit d'utiliser le code du lecteur comme base de votre propre script pour accéder aux informations dont vous avez besoin.

+0

Grande réponse, vous avez raison! Je pensais vraiment que c'était un fichier xml .. mais c'est xls - J'ai obtenu le mauvais format de fichier de la banque. Je vais avoir le XML normal et tout devrait fonctionner. JE VOUS REMERCIE ! – DreamWave

+1

Techniquement, il s'agit d'un fichier XML ... pas seulement structuré comme vous l'attendiez. –