2013-07-30 126 views
3

我嘗試在web.xml中IntelliJ IDEA的執行XPath表達式不能與IntelliJ IDEA的

XPath表達式

//param-value[email] 

的web.xml

<?xml version="1.0" encoding="UTF-8"?> 
<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" 
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
      xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> 
    <display-name>Archetype Created Web Application</display-name> 
    <servlet> 
     <servlet-name>ServletName</servlet-name> 
     <servlet-class>com.ServletDemo</servlet-class> 
    </servlet> 

    <servlet-mapping> 
     <servlet-name>ServletName</servlet-name> 
     <url-pattern>/Demo1</url-pattern> 
    </servlet-mapping> 

    <context-param> 
     <param-name>email</param-name> 
     <param-value>[email protected]</param-value> 
    </context-param> 
</web-app> 

執行XPath我沒有結果。此外,Idea強調參數值,因爲它不存在,當我按Ctrl +空格時,我看不到標籤!我嘗試在另一個項目和另一個xml中使用這個插件 - 它可以工作,但在這種情況下不是。

任何想法?可能是我錯過了一些配置?

更新

我刪除從網絡應用標籤和屬性的表達開始工作。但爲什麼?

+0

你的問題是,你的XPath不符合您的XML。你想回報什麼? –

+0

我嘗試從​​獲得價值。我運行// context-param/param-name [text()='email'],但是僅在從web-app標籤中刪除屬性之後才起作用,因此它在沒有版本,xmlns,xmlns:xsi和schemalocation屬性的情況下工作。 – Cherry

回答

4

首先,param-value元素位於名稱空間中,但您的XPath表達式在沒有名稱空間中查找它。通常,您需要一個表達式,例如//j:param-value,其中前綴j綁定到命名空間http://java.sun.com/xml/ns/j2ee - 您必須檢查IntelliJ文檔以瞭解如何執行此操作。

其次,您的參數值元素沒有名爲email的子元素。如果你想關聯的param-name元素的值是 「電子郵件」,這將是

//j:context-param[j:param-name='email']/j:param-value 
1

嘗試以下操作:

  1. 開放計算XPath窗口(Ctrl + Shift + A鍵:計算XPath)
  2. 單擊高級按鈕
  3. 添加URI前綴(在下面的截圖中我已經加入Maven的POM命名空間「POM」前綴)
  4. 嘗試,以評估「/ POM:項目」的XPath任何的pom.xml(不現在的IntelliJ自動填充POM元素冰)

Intellij Evaluate expression screenshot