这是我的oozie workflow.xml的一个片段
<property>
<name>statement</name>
<value>${statement}</value>
</property>
语句可能包含“>”、“<”等字符。当语句包含“>”(不编码)时,我的作业将成功运行。但是,如果语句包含“<”,作业将失败,并出现错误“ja007:error on line:元素的内容必须由格式良好的字符数据或标记组成”
例如案例a:statement=“x>3;y> 4“(无错误)案例b:statement=“x>3;y<4英寸(ja007)
2条答案
按热度按时间bpsygsoo1#
找到了根本问题。saxbuilder可以很好地解析这一行“x>2”
但失败,以下行“x<2”除外
“>”、“<”都是xml特殊字符,理想情况下,行为应该相同。
8yoxcaq72#
sax解析器读取左括号作为子元素标记的开始,而右括号表示元素标记的结束。如果解析器当前不在元素标记中,那么右括号可能被认为是合法的,并且被接受。
如果尚未解决此问题,则需要按如下方式定义语句以对左括号和右括号进行xml转义:
这在属性文件中可以正常工作,但是如果您使用
-Dkey=value
表示法,则需要将参数括在引号中,以避免shell错误地解释符号: