这是我的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)
答案 0 :(得分:0)
找到了潜在的问题。 SAXBuilder可以很好地解析这条线 “×→2”
但失败,但后续行有例外 “×&2”
两个“&gt;” ,“&lt;”是xml特殊字符,理想情况下,行为应该是相同的。
答案 1 :(得分:0)
SAX解析器正在读取左括号作为子元素标记的开头,而右括号表示元素标记的结尾。如果解析器当前不在元素标记内,那么右括号可能被认为是合法的,并被接受。
如果您尚未解决此问题,则需要按如下方式将语句定义为XML左右括号:
statement=x>3;y<4
这在属性文件中可以正常工作,但是如果您使用-Dkey=value
表示法从命令行传递变量,那么您需要将参数包装在引号中以避免错误地解释&符号由shell:
"-Dstatement=x>3;y<4"