gpt4 book ai didi

xml - Ant/XML 转义属性值中的独立引号

转载 作者:数据小太阳 更新时间:2023-10-29 02:46:58 33 4
gpt4 key购买 nike

在我的 ant 构建文件中有一个属性:

<property name="pwd" value="" description="value set external"/>

此属性由用户通过 GUI 设置。稍后我想调用一个 java 任务并将属性“pwd”的值作为参数传递给 java 类:

<java classname="package.and.classname" dir="${directory}" fork="yes" failonerror="true">
<arg line="-u ${user}"/>
<arg line="-p ${pwd}"/>
<classpath>
<pathelement path="[...]"/>
</classpath>
</java>

在用户拥有包含单引号 (') 或单双引号 (") 的密码之前,这会正常工作。

unbalanced quotes in -p pass'word

好的 - 简单的解决方法:

     <arg line="-p &quot;${pwd}&quot;"/> 

但是接下来的情况是pwd = pass"word。然后报错: "The syntax of the command is incorrect."当同时使用 (' 和 ") 时会发生什么?

我试图用 &quot; 转义引号和/或 &apos;但最终,行为并没有真正改变。即使我交换<arg line><arg value>对于每个参数,问题仍然存在(但实际上现在只针对双引号或混合大小写)。

例如:

<arg value="-u"/>
<arg value="${user}"/>
<arg value="-p"/>
<arg value="${pwd}"/>

可以使用 pwd=pass'word但不是 pwd=pass"wordpwd=pass&quot;word .

有没有办法告诉 Ant pwd 的值?不应该被评估?

最佳答案

只需将属性值用单引号加上", f.e.:

<project> 
<property name="foo" value='b"ar'/>
<echo>$${foo} => ${foo}</echo>
</project>

输出

[echo] ${foo} => b"ar

编辑

混合大小写

<project> 
<property name="foo" value="b&quot;a&apos;r"/>
<echo>$${foo} => ${foo}</echo>
</project>

输出

[echo] ${foo} => b"a'r

似乎 ant 能够处理这种混合情况,但您的 Java 类不能。

编辑

有了这样的类

public class Foobar
{
public static void main(String[] args)
{
System.out.println("args[0] => " + args[0] );
System.out.println("args[1] => " + args[1] );
System.out.println("args[2] => " + args[2] );
}
}

和这个 ant 脚本:

<project>   
<java classname="Foobar" classpath=".">
<arg value="b&quot;a&apos;r"/>
<arg value="ba&apos;r"/>
<arg value="b&quot;ar"/>
</java>
</project>

一切正常,输出:

 [java] args[0] => b"a'r
[java] args[1] => ba'r
[java] args[2] => b"ar

注意 = 它仅适用于 arg 值,例如:

<project>   
<java classname="Foobar" classpath=".">
<arg value="-p b&quot;a&apos;r"/>
<arg value="-p ba&apos;r"/>
<arg value="-p b&quot;ar"/>
</java>
</project>

输出

 [java] args[0] => -p b"a'r
[java] args[1] => -p ba'r
[java] args[2] => -p b"ar

鉴于

<project> 
<java classname="Foobar" classpath=".">
<arg line="-p b&quot;a&apos;r"/>
<arg line="-p ba&apos;r"/>
<arg line="-p b&quot;ar"/>
</java>
</project>

结果:

unbalanced quotes in -p b"a'r 

关于xml - Ant/XML 转义属性值中的独立引号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53169030/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com