oozie工作流属性中的XML特殊字符

时间:2012-12-12 13:33:13

标签: hadoop oozie

这是我的oozie workflow.xml的片段

<property>
   <name>statement</name>                   
   <value>${statement}</value>
</property>

该陈述可能包含'&gt;','&lt;'等字符当语句包含'&gt;'时(没有编码),我的作业成功运行,但是如果语句包含'&lt;',则作业失败并显示错误“JA007:错误在线:元素的内容必须包含格式正确的字符数据或标记”

例如 case a:statement =“x&gt; 3; y&gt; 4”(无错误) case b:statement =“x&gt; 3; y&lt; 4”(JA007)

2 个答案:

答案 0 :(得分:0)

找到了潜在的问题。 SAXBuilder可以很好地解析这条线 “×→2”

但失败,但后续行有例外 “×&2”

两个“&gt;” ,“&lt;”是xml特殊字符,理想情况下,行为应该是相同的。

答案 1 :(得分:0)

SAX解析器正在读取左括号作为子元素标记的开头,而右括号表示元素标记的结尾。如果解析器当前不在元素标记内,那么右括号可能被认为是合法的,并被接受。

如果您尚未解决此问题,则需要按如下方式将语句定义为XML左右括号:

statement=x&gt;3;y&lt;4

这在属性文件中可以正常工作,但是如果您使用-Dkey=value表示法从命令行传递变量,那么您需要将参数包装在引号中以避免错误地解释&符号由shell:

"-Dstatement=x&gt;3;y&lt;4"