Пытаясь найти значение «старения таймера» в следующем документе XML:XPath находят место в документе
<ospf3-database-information xmlns="http://xml.juniper.net/junos/11.1R2/junos-routing">
<ospf3-database external-heading="OSPF3">
<lsa-type>Extern</lsa-type>
<lsa-id>0.0.0.1</lsa-id>
<advertising-router>172.27.255.6</advertising-router>
<sequence-number>0x80000001</sequence-number>
<age>1792</age>
<checksum>0x90bd</checksum>
<lsa-length>28</lsa-length>
<ospf3-external-lsa>
<ospf3-prefix>::/0</ospf3-prefix>
<ospf3-prefix-options>0x0</ospf3-prefix-options>
<type-value>1</type-value>
<metric>0</metric>
</ospf3-external-lsa>
<ospf-database-extensive>
<aging-timer junos:seconds="1808">
00:30:08
</aging-timer>
<installation-time junos:seconds="1790">
00:29:50
</installation-time>
<expiration-time junos:seconds="1808">
00:30:08
</expiration-time>
<send-time junos:seconds="1790">
00:29:50
</send-time>
<lsa-changed-time junos:seconds="1790">
00:29:50
</lsa-changed-time>
<lsa-change-count>1</lsa-change-count>
</ospf-database-extensive>
</ospf3-database>
</ospf3-database-information>
Единственное ограничение в том, что я хочу, это только если «ospf3-приставка» имеет текст of ::/0. Я пытаюсь это:
XPath//x:ospf3-external-lsa[x:ospf3-prefix=\"::/0\"]/ancestor::x:ospf3-database/x:ospf-database-extensive/x:aging-timer
с использованием х для обработки пространств имен в Perl:
my $xdatav6 = XML::LibXML->load_xml(string => $defv6);
my $dataxv6 = XML::LibXML::XPathContext->new($xdatav6);
$dataxv6->registerNs("x", "http://xml.juniper.net/junos/11.1R2/junos-routing");
, но это не работает, кажется, что, когда я использую предок он может захватить все, кроме что-либо под деревом «ospf-database-wide».
пытаясь найти значение чего? –
Извините, я добавил изменение. Значение времени старения. – salparadise
Я не вижу ничего неправильного - вы вроде бы подразумеваете, что сделали некоторую отладку - в частности, вы уверены, что: (1) // x: ospf3-external-lsa [x: ospf3-prefix = \ «::/0 \»] выбирает правильные узлы; и (2) база данных ancestor :: x: ospf3 выбирает правильный узел, но (3) он не может найти дочерний узел ospf-database-wide-node? –