0

以与此处所做的类似的方式,我想从 sqlmap.config 文件中 xmlpoke connectionString:

<?xml version="1.0" encoding="utf-8" ?>
<sqlMapConfig
   xmlns="http://ibatis.apache.org/dataMapper"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" >

    <database>
        <provider name="oracleClient1.0"/>
        <dataSource name="DSExtranetAdherent"
                    connectionString="Data Source=MyInstance;User ID=MyUser;Password=MyPwd;Unicode=True;"/>

    </database>

</sqlMapConfig>

我试过这个戳:

<xmlpoke
  file="${ConfigPath}\sqlmap.config"
  xpath="/sqlMapConfig/database/dataSource/@connectionString"
  value="${ConnectionString}" />

但我收到一条错误消息:

[xmlpoke] 没有找到与 XPath 表达式“/sqlMapConfig/database/dataSource/@connectionString”匹配的节点。

当我删除该xmlns属性时,xpath 有效,但随后出现此运行时错误:

无法通过资源“SqlMap.config”将文件加载为资源。

关于如何用一个好的 xpath 修复这个 xmlpoke 的任何想法?

4

2 回答 2

1

xmlns是默认命名空间,xmlpoke 需要一个前缀来进行 xpath 解析:

<xmlpoke
  file="${ConfigPath}\sqlmap.config"
  xpath="/iba:sqlMapConfig/iba:database/iba:dataSource/@connectionString"
  value="${ConnectionString}">
  <namespaces>
    <namespace prefix="iba" uri="http://ibatis.apache.org/dataMapper" />
  </namespaces>
</xmlpoke>
于 2013-10-30T14:58:47.347 回答
0

您应该<namespaces>为任务指定子节点<xmlpoke>

<namespaces>
    <namespace prefix="xsi" uri="http://www.w3.org/2001/XMLSchema-instance" />
</namespaces>

此页面上的最后一个示例仅说明了您的情况。

于 2013-10-30T13:49:55.943 回答