从XML获取具有属性值的特定标签 [英] Fetch specific tag with an attribute value from XML

查看:95
本文介绍了从XML获取具有属性值的特定标签的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个如下所示的XML文件:

I have a XML file like the following:

<?xml version="1.0" encoding="UTF-8"?>
<response uri="/crm/private/xml/SalesOrders/getRecords">
    <result>
        <SalesOrders>
            <row no="1">
                <FL val="SALESORDERID">580005000000187001</FL>
                <FL val="SO Number"><![CDATA[580005000000187002]]></FL>
                <FL val="Subject"><![CDATA[Sales order test from sri 02]]></FL>
                <FL val="Due Date"><![CDATA[2013-03-10]]></FL>
                <FL val="Status"><![CDATA[Created]]></FL>
                <FL val="ACCOUNTID">580005000000088096</FL>
                <FL val="Account Name"><![CDATA[Best Western Pavilions]]></FL>
                <FL val="SMOWNERID">580005000000052003</FL>
                <FL val="Sales Order Owner"><![CDATA[Adithya Buddhavarapu]]></FL>
                <FL val="SMCREATORID">580005000000052003</FL>
                <FL val="Created By"><![CDATA[Adithya Buddhavarapu]]></FL>
                <FL val="MODIFIEDBY">580005000000052003</FL>
                <FL val="Modified By"><![CDATA[Adithya Buddhavarapu]]></FL>
                <FL val="Created Time"><![CDATA[2013-01-17 20:32:19]]></FL>
                <FL val="Modified Time"><![CDATA[2013-01-17 20:32:19]]></FL>
                <FL val="Sub Total"><![CDATA[250]]></FL>
                <FL val="Tax"><![CDATA[0]]></FL>
                <FL val="Adjustment"><![CDATA[0]]></FL>
                <FL val="Grand Total"><![CDATA[250]]></FL>
                <FL val="Product Details">
                    <product no="1">
                        <FL val="Product Id">580005000000171125</FL>
                        <FL val="Product Name"><![CDATA[The Grilling Maestro]]></FL>
                        <FL val="Unit Price">10.0</FL>
                        <FL val="Quantity">20.0</FL>
                        <FL val="Quantity in Stock">0.0</FL>
                        <FL val="Total">200.0</FL>
                        <FL val="Discount">0.0</FL>
                        <FL val="Total After Discount">200.0</FL>
                        <FL val="List Price">10.0</FL>
                        <FL val="Net Total">200.0</FL>
                        <FL val="Tax">0.0</FL>
                        <FL val="Product Description"><![CDATA[null]]></FL>
                    </product>
                    <product no="2">
                        <FL val="Product Id">580005000000171131</FL>
                        <FL val="Product Name"><![CDATA[Uptown Deli   Soup du Jour]]></FL>
                        <FL val="Unit Price">25.0</FL>
                        <FL val="Quantity">1.0</FL>
                        <FL val="Quantity in Stock">0.0</FL>
                        <FL val="Total">50.0</FL>
                        <FL val="Discount">1.23</FL>
                        <FL val="Total After Discount">23.77</FL>
                        <FL val="List Price">25.0</FL>
                        <FL val="Net Total">48.77</FL>
                        <FL val="Tax">0.0</FL>
                        <FL val="Product Description"><![CDATA[null]]></FL>
                    </product>
                </FL>
                <FL val="Terms and Conditions"><![CDATA[iBanquet T and C]]></FL>
                <FL val="Description"><![CDATA[Sales Order from iBanquet]]></FL>
                <FL val="Discount"><![CDATA[0]]></FL>
            </row>
            <row no="2">
                <FL val="SALESORDERID">580005000000134001</FL>
                <FL val="SO Number"><![CDATA[580005000000134003]]></FL>
                <FL val="Subject"><![CDATA[Test]]></FL>
                <FL val="CONTACTID">580005000000120009</FL>
                <FL val="Contact Name"><![CDATA[Sydney Lai]]></FL>
                <FL val="Carrier"><![CDATA[FedEX]]></FL>
                <FL val="Excise Duty"><![CDATA[0]]></FL>
                <FL val="Sales Commission"><![CDATA[0]]></FL>
                <FL val="Status"><![CDATA[Created]]></FL>
                <FL val="ACCOUNTID">580005000000088100</FL>
                <FL val="Account Name"><![CDATA[Best Western Sportstown Anaheim]]></FL>
                <FL val="SMOWNERID">580005000000052003</FL>
                <FL val="Sales Order Owner"><![CDATA[Adithya Buddhavarapu]]></FL>
                <FL val="SMCREATORID">580005000000052003</FL>
                <FL val="Created By"><![CDATA[Adithya Buddhavarapu]]></FL>
                <FL val="MODIFIEDBY">580005000000052003</FL>
                <FL val="Modified By"><![CDATA[Adithya Buddhavarapu]]></FL>
                <FL val="Created Time"><![CDATA[2012-11-08 14:51:50]]></FL>
                <FL val="Modified Time"><![CDATA[2012-11-08 14:51:50]]></FL>
                <FL val="Sub Total"><![CDATA[45]]></FL>
                <FL val="Tax"><![CDATA[0]]></FL>
                <FL val="Adjustment"><![CDATA[0]]></FL>
                <FL val="Grand Total"><![CDATA[45]]></FL>
                <FL val="Product Details">
                    <product no="1">
                        <FL val="Product Id">580005000000059016</FL>
                        <FL val="Product Name"><![CDATA[Beef Stoganoff]]></FL>
                        <FL val="Unit Price">14.95</FL>
                        <FL val="Quantity">1.0</FL>
                        <FL val="Quantity in Stock">-25.0</FL>
                        <FL val="Total">45.0</FL>
                        <FL val="Discount">0.0</FL>
                        <FL val="Total After Discount">45.0</FL>
                        <FL val="List Price">45.0</FL>
                        <FL val="Net Total">45.0</FL>
                        <FL val="Tax">0.0</FL>
                        <FL val="Product Description"><![CDATA[null]]></FL>
                    </product>
                </FL>
                <FL val="Discount"><![CDATA[0]]></FL>
            </row>
            <row no="3">
                <FL val="SALESORDERID">580005000000118001</FL>
                <FL val="SO Number"><![CDATA[580005000000118003]]></FL>
                <FL val="Subject"><![CDATA[SAirpriya's Birthday]]></FL>
                <FL val="POTENTIALID">580005000000069001</FL>
                <FL val="Potential Name"><![CDATA[Sandeep]]></FL>
                <FL val="Due Date"><![CDATA[2012-10-17]]></FL>
                <FL val="Carrier"><![CDATA[FedEX]]></FL>
                <FL val="Excise Duty"><![CDATA[0]]></FL>
                <FL val="Sales Commission"><![CDATA[0]]></FL>
                <FL val="Status"><![CDATA[Created]]></FL>
                <FL val="ACCOUNTID">580005000000088090</FL>
                <FL val="Account Name"><![CDATA[Best Western Anaheim Inn]]></FL>
                <FL val="SMOWNERID">580005000000052003</FL>
                <FL val="Sales Order Owner"><![CDATA[Adithya Buddhavarapu]]></FL>
                <FL val="SMCREATORID">580005000000052003</FL>
                <FL val="Created By"><![CDATA[Adithya Buddhavarapu]]></FL>
                <FL val="MODIFIEDBY">580005000000052003</FL>
                <FL val="Modified By"><![CDATA[Adithya Buddhavarapu]]></FL>
                <FL val="Created Time"><![CDATA[2012-10-16 14:45:18]]></FL>
                <FL val="Modified Time"><![CDATA[2012-10-16 14:45:18]]></FL>
                <FL val="Sub Total"><![CDATA[1080]]></FL>
                <FL val="Tax"><![CDATA[0]]></FL>
                <FL val="Adjustment"><![CDATA[0]]></FL>
                <FL val="Grand Total"><![CDATA[1080]]></FL>
                <FL val="Product Details">
                    <product no="1">
                        <FL val="Product Id">580005000000059016</FL>
                        <FL val="Product Name"><![CDATA[Beef Stoganoff]]></FL>
                        <FL val="Unit Price">14.95</FL>
                        <FL val="Quantity">24.0</FL>
                        <FL val="Quantity in Stock">-25.0</FL>
                        <FL val="Total">1080.0</FL>
                        <FL val="Discount">0.0</FL>
                        <FL val="Total After Discount">1080.0</FL>
                        <FL val="List Price">45.0</FL>
                        <FL val="Net Total">1080.0</FL>
                        <FL val="Tax">0.0</FL>
                        <FL val="Product Description"><![CDATA[null]]></FL>
                    </product>
                </FL>
                <FL val="Discount"><![CDATA[0]]></FL>
            </row>
            <row no="4">
                <FL val="SALESORDERID">580005000000070009</FL>
                <FL val="SO Number"><![CDATA[580005000000070011]]></FL>
                <FL val="Subject"><![CDATA[iBanquet]]></FL>
                <FL val="QUOTEID">580005000000070003</FL>
                <FL val="Quote Name"><![CDATA[iBanquet]]></FL>
                <FL val="Carrier"><![CDATA[UPS]]></FL>
                <FL val="Excise Duty"><![CDATA[0]]></FL>
                <FL val="Sales Commission"><![CDATA[0]]></FL>
                <FL val="Status"><![CDATA[Created]]></FL>
                <FL val="ACCOUNTID">580005000000058001</FL>
                <FL val="Account Name"><![CDATA[Hotel Skysurf]]></FL>
                <FL val="SMOWNERID">580005000000052003</FL>
                <FL val="Sales Order Owner"><![CDATA[Adithya Buddhavarapu]]></FL>
                <FL val="SMCREATORID">580005000000052003</FL>
                <FL val="Created By"><![CDATA[Adithya Buddhavarapu]]></FL>
                <FL val="MODIFIEDBY">580005000000052003</FL>
                <FL val="Modified By"><![CDATA[Adithya Buddhavarapu]]></FL>
                <FL val="Created Time"><![CDATA[2012-06-19 19:17:12]]></FL>
                <FL val="Modified Time"><![CDATA[2012-06-29 19:55:00]]></FL>
                <FL val="Sub Total"><![CDATA[20538]]></FL>
                <FL val="Tax"><![CDATA[0]]></FL>
                <FL val="Adjustment"><![CDATA[0]]></FL>
                <FL val="Grand Total"><![CDATA[20538]]></FL>
                <FL val="Product Details">
                    <product no="1">
                        <FL val="Product Id">580005000000059032</FL>
                        <FL val="Product Name"><![CDATA[Carrot Cake]]></FL>
                        <FL val="Unit Price">10.0</FL>
                        <FL val="Quantity">441.0</FL>
                        <FL val="Quantity in Stock">-882.0</FL>
                        <FL val="Total">4410.0</FL>
                        <FL val="Discount">0.0</FL>
                        <FL val="Total After Discount">4410.0</FL>
                        <FL val="List Price">10.0</FL>
                        <FL val="Net Total">4410.0</FL>
                        <FL val="Tax">0.0</FL>
                        <FL val="Product Description"><![CDATA[null]]></FL>
                    </product>
                    <product no="2">
                        <FL val="Product Id">580005000000059022</FL>
                        <FL val="Product Name"><![CDATA[Chicken Parmigiano]]></FL>
                        <FL val="Unit Price">15.0</FL>
                        <FL val="Quantity">122.0</FL>
                        <FL val="Quantity in Stock">-122.0</FL>
                        <FL val="Total">1464.0</FL>
                        <FL val="Discount">0.0</FL>
                        <FL val="Total After Discount">1464.0</FL>
                        <FL val="List Price">12.0</FL>
                        <FL val="Net Total">1464.0</FL>
                        <FL val="Tax">0.0</FL>
                        <FL val="Product Description"><![CDATA[null]]></FL>
                    </product>
                    <product no="3">
                        <FL val="Product Id">580005000000059030</FL>
                        <FL val="Product Name"><![CDATA[Coconut Cake]]></FL>
                        <FL val="Unit Price">10.0</FL>
                        <FL val="Quantity">1222.0</FL>
                        <FL val="Quantity in Stock">-1222.0</FL>
                        <FL val="Total">14664.0</FL>
                        <FL val="Discount">0.0</FL>
                        <FL val="Total After Discount">14664.0</FL>
                        <FL val="List Price">12.0</FL>
                        <FL val="Net Total">14664.0</FL>
                        <FL val="Tax">0.0</FL>
                        <FL val="Product Description"><![CDATA[null]]></FL>
                    </product>
                </FL>
                <FL val="Discount"><![CDATA[0]]></FL>
            </row>
        </SalesOrders>
    </result>
</response>

我只需要显示存储在<FL val="Sales Order Owner">标签下的销售订单所有者名称.

I need to show only the name of the sales order owner name, which are storing under <FL val="Sales Order Owner"> tag.

获取xml之后,我将转换为数组,然后尝试访问.我的代码是这样的:

After getting the xml, I convert into an array and then try to access. My code is like:

foreach ($xml_sales->result->SalesOrders->row as $t) {
  foreach ($t->FL as $rr) {
    echo $rr."<br />";  
  }
}

正在显示所有FL值.

/ * ** * ** * ** 编辑后 * ** * **** /

/*********After editing********/

$file_sales_content = "https://crm.zoho.com/crm/private/xml/SalesOrders/getRecords?authtoken=XXX&scope=crmapi"  
$doc = new DOMDocument();
$doc->loadXML( $file_sales_content );   
$xpath = new DOMXPath( $doc );
$items = $xpath->evaluate( '//FL[@val="Sales Order Owner"]' );
for ( $i = 0; $i < $items->length; $i++ ) {
 echo $items->item( $i )->textContent . '<br>';
}

实际上通过此url,我正在获取xml文件.但最后我得到了一些警告,例如:Warning: DOMDocument::loadXML() [domdocument.loadxml]: Start tag expected, '<' not found in Entity, line: 1 in C:\xampp\htdocs\ibanquet\manager\user_list.php on line 34

Actually by this url, I am getting the xml file. But finally I got some warning like: Warning: DOMDocument::loadXML() [domdocument.loadxml]: Start tag expected, '<' not found in Entity, line: 1 in C:\xampp\htdocs\ibanquet\manager\user_list.php on line 34

推荐答案

所有您需要做的就是创建 DOMDocument 对象,加载xml,创建 DOMXpath 用于文档的对象并评估xpath表达式:

All you need to do is just create DOMDocument object, load your xml, create DOMXpath object for your document and evaluate xpath expression:

$xml = file_get_contents( "https://crm.zoho.com/crm/private/xml/SalesOrders/getRecords?authtoken=XXX&scope=crmapi" );

$doc = new DOMDocument();
$doc->loadXML( $xml );

$xpath = new DOMXPath( $doc );
$items = $xpath->evaluate( '//FL[@val="Sales Order Owner"]' );
for ( $i = 0; $i < $items->length; $i++ ) {
    echo $items->item( $i )->textContent . '<br>';
}

它将输出:

Adithya Buddhavarapu
Adithya Buddhavarapu
Adithya Buddhavarapu
Adithya Buddhavarapu

这篇关于从XML获取具有属性值的特定标签的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆