我使用公共配置,從我自己設計的XML文件中讀取SQL查詢,下面是兩個在配置文件中的查詢略有不同的例子:XPath如何在元素和屬性文本中處理逗號?
<query name="authenticateAccount" type="function">
<sql>
{ ? = call account_authenticate(?, ?) }
<parameter name="retun" type="java.sql.Types.BOOLEAN" direction="out" index="1" />
<parameter name="supplied_email" type="java.lang.String" direction="in" index="2" />
<parameter name="supplied_pw" type="java.lang.String" direction="in" index="3" />
</sql>
</query>
<query name="authenticateAccount" type="function">
<sql text="{ ? = call account_authenticate(?, ?) }">
<parameter name="retun" type="java.sql.Types.BOOLEAN" direction="out" index="1" />
<parameter name="supplied_email" type="java.lang.String" direction="in" index="2" />
<parameter name="supplied_pw" type="java.lang.String" direction="in" index="3" />
</sql>
</query>
查詢文本(在看到sql元素的文本或上面的「text」參數)作爲參數提供給java.sql.Connection.prepareCall()以創建JDBC CallableStatement。
然而,當文本由
// I tried both of these for the first xml example:
HeirarchicalConfiguration.getString("query[@name='authenticateAccount']/sql/text()")
HeirarchicalConfiguration.getString("query[@name='authenticateAccount']/sql")
// The following for the second xml example:
HeirarchicalConfiguration.getString("query[@name='authenticateAccount']/sql/@text")
閱讀這些XPath表達式讀取查詢文本中一直到但不包括第一個逗號:
{ ? = call account_authenticate(?
是我所看到的顯示時用XPath表達式讀入的文本。
我試着用XML搜索XPath表達式和逗號的搜索信息,但沒有發現任何幫助。爲什麼不是通過第一個逗號讀取文本?
第一個xml看起來真的很腥,第二個('/ sql/@ text')應該解析得很好,可能是你正在使用的解析器的問題 –