我使用公共配置,从我自己设计的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')应该解析得很好,可能是你正在使用的解析器的问题 –