2017-07-12 135 views
0

我正在使用OVAL(Open Vulnerability and Assessment Language)。在那里我正在使用xpath检查xml配置文件。XPath检查多个子节点文本

XML文件是这样的:

<?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> 

我想看看里面init-paramparam-name必须包含debugparam-value还必须包含0

我写的XPath这样

<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> 

但它不是沃金,有没有其他的方法来检查?

回答

0

尝试此定位:

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

逻辑很简单: 定位具有特殊属性来获得元素看起来是这样的:tag[attribute],你可以得到它使用多个属性过于元素:tag[attribute1][attribute2]tag[attribute1 and attribute2]