2017-07-12 13 views
0

Ich arbeite OVAL (offene Vulnerability and Assessment Language). Dort überprüfe ich die XML-Konfigurationsdatei mit Xpath.XPath überprüfen mehrere Kindknoten Text

XML-Datei ist wie folgt:

<?xml version='1.0' encoding='UTF-8'?> 
<web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="3.0" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"> 

<servlet> 
     <servlet-name>default</servlet-name> 
     <servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class> 
     <init-param> 
      <param-name>debug</param-name> 
      <param-value>0</param-value> 
     </init-param> 
     <init-param> 
      <param-name>listings</param-name> 
      <param-value>false</param-value> 
     </init-param> 
     <load-on-startup>1</load-on-startup> 
</servlet> 
</web> 

ich in init-paramparam-name überprüfen wollen, müssen debug und param-value auch 0 enthalten muss enthalten.

Ich schreibe XPath wie diese

<xpath datatype="string" operation="equals">/*[local-name()="web-app"]/*[local-name()="servlet"]/*[local-name()="init-param"]/*[local-name()="param-name"][text()="debug"][local-name()="param-value"][text()="0"]</xpath> 

Aber es ist woking nicht, Gibt es eine andere Art und Weise zu überprüfen?

Antwort

0

versuchen, diesen Locator:

//init-param[./param-name[contains(text(),'debug')]][./param-value[contains(text(),'0')]] 

Logik ist einfach: Fixierelement mit speziellem Attribute sieht wie folgt zu erhalten: tag[attribute1][attribute2] oder tag[attribute1 and attribute2]

: tag[attribute], Sie Elemente mit mehreren Attributen es zu verwenden bekommen