2017-07-12 3 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の中身をチェックしたい0が含まれている必要があり、またdebugparam-valueが含まれている必要があります。

私はこの

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

のようなXPathを書いています。しかし、それはウォーキングいない、チェックする他の方法はありますか?

答えて

0

このロケータを試してみてください。

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

ロジックは単純です:特殊な属性を持つ要素を取得する ロケータは、次のようになります。tag[attribute]、あなたもそれを使用して複数の属性を持つ要素を取得することができます:tag[attribute1][attribute2]tag[attribute1 and attribute2]