3

这是我的 oozie workflow.xml 的片段

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

该语句可能包含诸如'>'、'<'等字符。当语句包含'>'(无编码)时,我的作业运行成功,但是如果语句包含'<',作业将失败并出现错误“JA007: Error on line :元素的内容必须由格式良好的字符数据或标记组成”

例如 case a: statement = "x>3;y>4" (没有错误) case b: statement = "x>3;y<4" (JA007)

4

2 回答 2

1

找到了根本问题。SAXBuilder 可以很好地解析这一段行 "x>2"

但失败,以下行“x<2”除外

">" 、 "<" 都是 xml 特殊字符,理想情况下,行为应该相同。

于 2012-12-12T13:57:18.707 回答
0

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

如果你还没有解决这个问题,你想定义如下的语句来 XML 转义左右括号:

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

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

"-Dstatement=x&gt;3;y&lt;4"
于 2012-12-13T00:06:56.487 回答