Я использую конфигурацию commons для чтения запросов SQL из файла XML моего собственного дизайна, ниже приведены два слегка отличающихся примера запроса в файле конфигурации:
<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 или параметре «текст» выше) должен быть предоставлен в качестве параметра 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.
Я попытался найти информацию о выражениях XPath и запятых в XML, но ничего полезного не нашел. Почему текст не читается после первой запятой?