我试图在Watson Data Explorer中实现属性文件的概念,在其中我将一些数据(用户名,密码,URL ..)保存在一个解析器中。
1:我在Xml部分下创建了一个解析器。
<parser name="test-properties-parser" modified-by="surya@test" max-elt-id="7" modified="1532098188"> <process-xsl><![CDATA[
<xsl:template match="/">
<test-port>1521</test-port>
<test-username>testuser</test-username>
<test-password>[[vcrypt/3]]xqvC0W+xJ33fY+C/9cjiWJ9RyuzPffOz|zB2EHEd8GWMdP</test-password>
<cookie-username>testadmin</cookie-username>
<cookie-password>testadmin1</cookie-password>
</xsl:template>
]]></process-xsl>
</parser>
我将使用集合中解析器中定义的所有详细信息,简而言之,我将在一个地方定义所有常见和机密的细节,并在需要的地方使用。
2:现在,我使用数据库(自定义SQL)作为种子创建了一个集合,并从上面定义的解析器中获取了所有信息(主机,端口等)。
EX:主机:<value-of select="viv:process-xml(viv:repository-get('parser','test-properties-parser'))//test-host" />
这将为我提供上面解析器中提供的主机详细信息,并且对于所有字段都可以正常工作。
问题陈述:当我在Cookie中使用相同概念时会出现问题(配置->爬行选项卡->全局设置-> HTTP特定-> Cookie)。
<parse url="http://abc.test.com/cs/login/" method="POST" ignore-http-status="ignore-http-status">
//Hard coded values : working fine
/* <parse-param name="j_username" value="TestUser" />
<parse-param name="j_password" value="TestPassword" /> */
//Get Dynamic values from repository :
parse-param name="j_username"><value-of select="viv:process-xml(viv:repository-get('parser','test-properties-parser'))//cookie-username" /></parse-param>
<parse-param name="j_password"><value-of select="viv:process-xml(viv:repository-get('parser','test-properties-parser'))//cookie-password" /></parse-param>
<parse-param name="j_character_encoding" value="UTF-8" />
<parser type="html-xsl"><![CDATA[
<xsl:template match="/">
<xsl:value-of select="substring-before(viv:current-node()/@cookie-jar,';')" />
</xsl:template>
]]></parser>
</parse>
由于两个参数(用户名,密码)均为空,因此无法抓取该URL。
函数: viv:process-xml(viv:repository-get('parser','test-properties-parser'))//cookie-username
如果在内部解析标记中使用,则返回null。
我在这里可以使用其他功能吗?或我可以尝试的任何其他方法?