如何获取xml文件上的特定数据


How i get specific data on xml file?

如何获取特定数据?Kod属性是xml文件上的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/>";
    }
?>

使用如下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>

对两个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

我尝试用索引号获取值。谢谢@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;                   
    ?>