1

我如何获取特定数据,只有 Kod 属性是 xml 文件上的 USD 和 GBP?有没有获取属性值的方法?

今天.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"or 或"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
于 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 回答