1

特定のデータを取得するには、xmlファイルでKod属性のみがUSDとGBPです。属性値を取得する方法はありますか?

TODAY.XML:

<?xml version="1.0" encoding="iso-8859-9"?>
    <Tarih_Date Tarih="27.07.2012" Date="07/27/2012">
        <Currency Kod="USD" CurrencyCode="USD">
            <CurrencyName>US DOLLAR</CurrencyName>
            <ForexBuying>1.81</ForexBuying>
            <ForexSelling>1.8187</ForexSelling>
        </Currency>
        <Currency Kod="EUR" CurrencyCode="EUR">
            <CurrencyName>EURO</CurrencyName>
            <ForexBuying>2.2227</ForexBuying>
            <ForexSelling>2.2334</ForexSelling>
        </Currency>
        <Currency Kod="GBP" CurrencyCode="GBP">
            <CurrencyName>POUND STERLING</CurrencyName>
            <ForexBuying>2.841</ForexBuying>
            <ForexSelling>2.8559</ForexSelling>
        </Currency>
    </Tarih_Date>

PHP:

<?php
    $get_url = "today.xml";
    $xml = simplexml_load_file($get_url) or die("Error : Cannot create object!");

    foreach($xml-> Currency as $currency){
         //$attr = $currency -> attributes();
         echo $attr."<br/>";
         //echo $currency -> CurrencyName;
        //echo $data -> CurrencyName ."-". $data -> ForexBuying ."-". $data -> ForexSelling ."<br/>";
    }
?>
4

2 に答える 2

2

次のような XPath 式を使用します

/*/*[@Kod = 'USD' or @Kod = 'GBP']/*

これにより、XML ドキュメントの最上位要素の孫であり、その親のKod属性が文字列値 または のいずれかを持つ"USD"任意の要素が選択されます"GBP"

または使用

/*/*[@Kod = 'USD' or @Kod = 'GBP']/*/text()

これにより、前の XPath 式で選択された要素のテキスト ノードの子が選択されます。

XSLT ベースの検証:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:output omit-xml-declaration="yes" indent="yes"/>
 <xsl:strip-space elements="*"/>

 <xsl:template match="/">
     <xsl:copy-of select="/*/*[@Kod = 'USD' or @Kod = 'GBP']/*"/>
===========
     <xsl:copy-of select="/*/*[@Kod = 'USD' or @Kod = 'GBP']/*/text()"/>
 </xsl:template>
</xsl:stylesheet>

この変換が提供された XML ドキュメントに適用されると、次のようになります。

<Tarih_Date Tarih="27.07.2012" Date="07/27/2012">
    <Currency Kod="USD" CurrencyCode="USD">
        <CurrencyName>US DOLLAR</CurrencyName>
        <ForexBuying>1.81</ForexBuying>
        <ForexSelling>1.8187</ForexSelling>
    </Currency>
    <Currency Kod="EUR" CurrencyCode="EUR">
        <CurrencyName>EURO</CurrencyName>
        <ForexBuying>2.2227</ForexBuying>
        <ForexSelling>2.2334</ForexSelling>
    </Currency>
    <Currency Kod="GBP" CurrencyCode="GBP">
        <CurrencyName>POUND STERLING</CurrencyName>
        <ForexBuying>2.841</ForexBuying>
        <ForexSelling>2.8559</ForexSelling>
    </Currency>
</Tarih_Date>

2 つの XPath 式が評価され、この評価の結果が出力にコピーされます。

<CurrencyName>US DOLLAR</CurrencyName>
<ForexBuying>1.81</ForexBuying>
<ForexSelling>1.8187</ForexSelling>
<CurrencyName>POUND STERLING</CurrencyName>
<ForexBuying>2.841</ForexBuying>
<ForexSelling>2.8559</ForexSelling>
===========
     US DOLLAR1.811.8187POUND STERLING2.8412.8559
于 2012-07-31T12:27:36.193 に答える
0

インデックス番号で値を取得しようとしました。ありがとう@GordonM。

   <?php
        $get_url = "http://www.tcmb.gov.tr/kurlar/today.xml";
        $xml = simplexml_load_file($get_url) or die("Error : Cannot create object!");                       
        echo $xml -> Currency[0] -> Isim;
        echo "<br/>";   
        echo $xml -> Currency[2] -> Isim;                   
    ?> 
于 2012-07-31T07:32:55.110 に答える