2013-10-14 3 views
0

Я блокированные со следующей проблемой:Как проверить значение XML пары

У меня есть файл web.xml, который содержит несколько INFOS, тегов и фильтры.

Я хотел бы, чтобы остановить обработку в случае имени-парам «охранник» из-имени фильтра «AdministratorGuardFilter» имеет Парам-значение = «истинный»

web.xml отформатированный как это:

<filter> 
<filter-name>Character encoding filter</filter-name> 
<filter-class>ergonomics.filter.CharacterEncodingFilter</filter-class> 
</filter> 

<filter> 
<filter-name>AdministratorGuardFilter</filter-name> 
<filter-class>security.common.AdministratorGuard</filter-class> 
<init-param> 
    <param-name>guard</param-name> 
    <param-value>true</param-value> 
</init-param> 
</filter>  

<filter-mapping>  
<filter-name>AdministratorGuardFilter</filter-name>  
<url-pattern>/administrator/*</url-pattern>  

Любая идея?

Заранее большое спасибо за помощь и подсказки

Didier.

ответ

1

В следующем скрипте Ant используется сторонний <xmltask>. <xmltask> может отображать узел XML, выбранный выражением XPath, в свойство Ant.

<project name="ant-xmltask-web-xml-extract" default="run" basedir="."> 
    <!-- The elements of a web.xml file are in an XML namespace. To have --> 
    <!-- <xmltask> ignore namespaces, we put a ':' in front of each element --> 
    <!-- name. ':' tells the XPath mechanism to use the local name of the --> 
    <!-- element. --> 
    <property 
     name="xpath.expression" 
     value="/:web-app/:filter[:filter-name/text() = 'AdministratorGuardFilter']/:init-param[:param-name/text() = 'guard']/:param-value/text()" 
    /> 

    <target name="run"> 
     <taskdef name="xmltask" classname="com.oopsconsultancy.xmltask.ant.XmlTask" /> 
     <xmltask> 
      <fileset file="web.xml"/> 
      <copy path="${xpath.expression}" property="guard.value"/> 
     </xmltask> 

     <fail message="guard param for AdministratorGuardFilter is true."> 
      <condition> 
       <equals arg1="${guard.value}" arg2="true"/> 
      </condition> 
     </fail> 
    </target> 
</project> 
Смежные вопросы