2015-02-23 57 views
0

下面的示例中,我無法運行以下XPath表達式://Test[matches(Name1/text(),".*text.*")]和ExpressionExpection是觸發器。相反的表達//Test[matches(Name/text(),".*text.*")]正常工作! 請解釋爲什麼以及如何支付這個問題?因爲我花了很多時間沒有結果。 預先感謝您。 我爲例:xpath匹配同名節點內容的函數表達式

<?xml version="1.0"?> 
 
<Root> 
 
    <Test txt="0001" > 
 
    <Name1>text1</Name1> 
 
    <Name2>text2</Name2> 
 
    <Name3>text3</Name3> 
 
    </Test> 
 
    <Test txt="0002" > 
 
    <Name>text4</Name> 
 
    <Name>text5</Name> 
 
    <Name>text6</Name> 
 
    </Test> 
 
</Root>

+0

它適合我。你能否提供完整的代碼? – 2015-02-23 12:15:00

+3

你確定這不是相反嗎?我會'//測試[matches(Name/text(),。* text。*「)]'期望告訴你'matches'的第一個參數不能是多個項目的序列。爲了糾正這個問題,你可以使用'// Test [Name [matches(。,'。* text。*')]]'。 – 2015-02-23 12:50:34

+0

感謝Lingamurthy CS對你的興趣,這也適用於我,但在一個在線xPath測試,我認爲問題取決於在我的程序中使用的軟件包java xpath! – abaraa23000 2015-02-24 08:44:20

回答

1

至於我可以告訴表達//Test[matches(Name/text(),".*text.*")]可以讓你與你的輸入樣本的誤差多個項目的順序是不允許作爲第一個參數matches

爲了避免這個問題,只需使用//Test[Name[matches(., '.*text.*')]]

表達式//Test[matches(Name1/text(),".*text.*")]應該適用於您的樣本,因爲只有一個Name1孩子。