Member 13882901 Ответов: 0

Как отобразить все сообщения при нажатии на определенное значение атрибута?


Вот xml-файл:(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
<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 RESPONSE" changeTime="0.000000" vendorSpecific="false" >
<ieGroup name="GTP_V2_IE_CAUSE" >
<ie name="GTP_V2_IE_CAUSE">16
<ie name="CAUSE_SOURCE">0

<ieGroup name="GTP_V2_IE_FQ_CSID" >
<ie name="INSTANCE">1
<ie name="GTP_V2_IE_FQ_CSID">45

<ie name="GTP_V2_IE_APN_RESTRICTION">1
<ieGroup name="GTP_V2_IE_APN_AMBR" >
<ie name="UPLINK_MBR">64000
<ie name="DOWNLINK_MBR">64000

<ieGroup name="GTP_V2_IE_PAA" >
<ie name="PDN_TYPE">1
<ie name="IPV4_ADDRESS">192.168.149.193

<ieGroup name="GTP_V2_IE_FTEID" >
<ie name="INTERFACE_TYPE">139
<ie name="TEID">50343649
<ie name="IPV4_ADDRESS">192.168.149.182

<ieGroup name="GTP_V2_IE_BEARER_CNTXT" >
<ie name="INSTANCE">0
<ie name="GTP_V2_IE_EBI">5
<ieGroup name="GTP_V2_IE_CAUSE" >
<ie name="GTP_V2_IE_CAUSE">16
<ie name="CAUSE_SOURCE">0

<ieGroup name="GTP_V2_IE_BEARER_QOS" >
<ie name="ARP">28
<ie name="QCI">9
<ie name="UPLINK_MBR">0
<ie name="DOWNLINK_MBR">0
<ie name="UPLINK_GBR">0
<ie name="DOWNLINK_GBR">0

<ieGroup name="GTP_V2_IE_FTEID" >
<ie name="INTERFACE_TYPE">129
<ie name="TEID">19993
<ie name="IPV4_ADDRESS">192.168.149.185

<ieGroup name="GTP_V2_IE_FTEID" >
<ie name="INTERFACE_TYPE">133
<ie name="TEID">9998
<ie name="IPV4_ADDRESS">192.168.149.189



<traceSessionRef >
<mcc>311
<mnc>480
<trace_id>8323073


Что я уже пробовал:

Вот коды, которые я пробовал:

Чтобы отобразить только сообщения:
("Description.html")

<!DOCTYPE html>

<p id="unique"></p>
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
    if (this.readyState == 4 && this.status == 200) {
        myFunction(this);
    }
};
xhttp.open("GET", "1.xml", true);
xhttp.send();

function myFunction(xml) {
    var x, i, xmlDoc, txt;
    xmlDoc = xml.responseXML;
    txt="";
    x = xmlDoc.getElementsByTagName('msg');
	txt += x[0].getAttribute('name') + "<br>";
    for (i = 1; i &lt; x.length; i++) {
	if(x[i].getAttribute('name')!= x[i-1].getAttribute('name')){
        txt += x[i].getAttribute('name') + "<br>";
	}
    }
	var str =txt;
var str1=str.split("<br>");
// the native filter method of an Array in the following way to get an array with unique values:
//The native method filter will loop through the array and leave only those entries that pass the given callback function onlyUnique.
//onlyUnique checks, if the given value is the first occurring. If not, it must be a duplicate and will not be copied.
function onlyUnique(value, index, self) { 
    return self.indexOf(value) === index;
    }
	var uni = str1.filter( onlyUnique );

   for(var t=0; t &lt; uni.length;t++)
   {
	var re = uni[t].link("file:///C:/Users/abc/Downloads/project/Message.html");
	document.getElementById("unique").innerHTML += re + "<br>";
}
}


Для отображения внутренних msgs:
("Messages.html")

<!DOCTYPE html>

<p id="unique"></p>

var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
    if (this.readyState == 4 && this.status == 200) {
        myFunction(this);
    }
};
xhttp.open("GET", "1.xml", true);
xhttp.send();

function myFunction(xml) {
    var x, i, xmlDoc, txt;
    xmlDoc = xml.responseXML;
    txt="";
    x = xmlDoc.getElementsByTagName('ie');
	txt += x[0].getAttribute('name') + "<br>";
    for (i = 1; i &lt; x.length; i++) {
	if(x[i].getAttribute('name')!= x[i-1].getAttribute('name')){
        txt += x[i].getAttribute('name') + "<br>";
	}
    }
 document.getElementById("unique").innerHTML = txt;
}


Проблема заключается в том, что при нажатии на вывод Description.html все послания от Messages.html отображаются.

Но я хочу, чтобы при нажатии кнопки, скажем(создать запрос сеанса)
только те msgs , которые находятся внутри, должны быть отображены, а не все.

Пожалуйста, ответьте как можно скорее.СПАСИБО!

0 Ответов