如何使用xpath基于属性显示特定元素? [英] How to display a particular element based on attribute using xpath?

查看:138
本文介绍了如何使用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屋!

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