如何使用xpath基于属性显示特定元素? [英] How to display a particular element based on attribute using xpath?
问题描述
对于xml文件(1.xml)
<?xml version =1.0encoding =UTF-8?>
< xsl:stylesheet version =1.0
xmlns:xsl =http://www.w3.org/1999/XSL/Transform>
< traceCollecFile xmlns =http://www.3gpp.org/ftp/specs/archive/32_series/32.423#traceData>
< fileHeader fileFormatVersion =32.423 V10 .0vendorName =CDOT GROUP>
< fileSender elementDn =DC = a1.companycdot.com,SubNetwork = 1,ManagedElement = MME-1_1_1elementType =MME/> ;
< traceRecSession dnPrefix =DC = a1.companycdot.com,SubNetwork = 1traceRecSessionRef =992stime =2018-06-08T13:47 :12-05:30>
< ue idType =IMSIidValue =311480000002255/>
< msg function =S6name =UPDATE LOCATION ANSWERchangeTime =0.000000vendorSpecific =false>
< ie name =RESULT_CODE> 2001
< traceSessionRef>
< mcc> 311
< mnc> 480
< trace_id> 8323073
< traceRecSession dnPrefix =DC = a1.companycdot.com,SubNetwork = 1traceRecSessionRef =992stime =2018-06- 08T13:47:12-05:30>
< ue idType =IMSIidValue =311480000002255/>
< msg function = S11name =CREATE SESSION REQUESTchangeTime =0.000000vendorSpecific =false>
< ie name =GTP_V2_IE_IMSI> 311480000002255
<即name =GTP_V2_IE_RAT_TYPE> 6
< ie name =GTP_V2_IE_MSISDN> 913114802255
< ieGroup name =GTP_V2_IE_FQ_CSID>
< ie name =INSTANCE> 0
< ie name =GTP_V2_IE_FQ_CSID> 1
< ieGroup name =GTP_V2_IE_BEARER_CNTXT>
< ie name =INSTANCE> 0
< ie name =GTP_V2_IE_EBI> 5
< ieGroup name =GTP_V2_IE_BEARER_QOS>
< ie name =ARP> 92
< ie name =QCI > 9
< ie name =UPLINK_MBR> 0
< ie name =DOWNLINK_MBR> 0
< ie name =UPLINK_GBR> 0
< ie name =DOWNLINK_GBR> 0
< ie name =GTP_V2_IE_APN> vzwinternet.mnc480.mcc311.gprs
< traceSessionRef>
< mcc> 311
< mnc> 480
< trace_id> 8323073
我想只提取MSISDN值。
我尝试过:
<?php
$ doc = new DOMDocument();
$ doc-> load('tce_sgw.xml');
$ xpath = new DOMXPath($ doc);
//如果你想读取确切的属性
//选择所有ie元素有一个name属性,其值为GTP_V2_IE_MSISDN。
$ ienameAttribute = $ xpath-> query(// traceCollecFile / traceRecSession / msg / ie [@ name ='GTP_V2_IE_MSISDN'] );
if($ ienameAttribute-> length> 0){
echo $ ienameAttribute-> item(0) - > value;
}
< blockquote> doc = new DOMDocument();
doc-> load('tce_sgw.xml');
< blockquote> xpath = new DOMXPath(
For the xml file (1.xml)
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<traceCollecFile xmlns="http://www.3gpp.org/ftp/specs/archive/32_series/32.423#traceData" >
<fileHeader fileFormatVersion="32.423 V10.0" vendorName="CDOT GROUP" >
<fileSender elementDn="DC=a1.companycdot.com,SubNetwork=1, ManagedElement=MME-1_1_1" elementType="MME" />
<traceRecSession dnPrefix="DC=a1.companycdot.com,SubNetwork=1" traceRecSessionRef="992" stime="2018-06-08T13:47:12-05:30" >
<ue idType="IMSI" idValue="311480000002255" />
<msg function="S6" name="UPDATE LOCATION ANSWER" changeTime="0.000000" vendorSpecific="false" >
<ie name="RESULT_CODE">2001
<traceSessionRef >
<mcc>311
<mnc>480
<trace_id>8323073
<traceRecSession dnPrefix="DC=a1.companycdot.com,SubNetwork=1" traceRecSessionRef="992" stime="2018-06-08T13:47:12-05:30" >
<ue idType="IMSI" idValue="311480000002255" />
<msg function="S11" name="CREATE SESSION REQUEST" changeTime="0.000000" vendorSpecific="false" >
<ie name="GTP_V2_IE_IMSI">311480000002255
<ie name="GTP_V2_IE_RAT_TYPE">6
<ie name="GTP_V2_IE_MSISDN">913114802255
<ieGroup name="GTP_V2_IE_FQ_CSID" >
<ie name="INSTANCE">0
<ie name="GTP_V2_IE_FQ_CSID">1
<ieGroup name="GTP_V2_IE_BEARER_CNTXT" >
<ie name="INSTANCE">0
<ie name="GTP_V2_IE_EBI">5
<ieGroup name="GTP_V2_IE_BEARER_QOS" >
<ie name="ARP">92
<ie name="QCI">9
<ie name="UPLINK_MBR">0
<ie name="DOWNLINK_MBR">0
<ie name="UPLINK_GBR">0
<ie name="DOWNLINK_GBR">0
<ie name="GTP_V2_IE_APN">vzwinternet.mnc480.mcc311.gprs
<traceSessionRef >
<mcc>311
<mnc>480
<trace_id>8323073
I want to extract only the MSISDN values.
What I have tried:
<?php
$doc = new DOMDocument();
$doc->load('tce_sgw.xml');
$xpath = new DOMXPath($doc);
// If you want to read exact attribute
//Selects all the ie elements that have a "name" attribute with a value of "GTP_V2_IE_MSISDN".
$ienameAttribute = $xpath->query("//traceCollecFile/traceRecSession/msg/ie[@name='GTP_V2_IE_MSISDN']");
if ($ienameAttribute->length > 0) {
echo $ienameAttribute->item(0)->value;
}
doc = new DOMDocument();
doc->load('tce_sgw.xml');
xpath = new DOMXPath(
这篇关于如何使用xpath基于属性显示特定元素?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!