xml特殊字符

jxct1oxe  于 2021-06-03  发布在  Hadoop
关注(0)|答案(2)|浏览(334)

这是我的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)

bpsygsoo

bpsygsoo1#

找到了根本问题。saxbuilder可以很好地解析这一行“x>2”
但失败,以下行“x<2”除外
“>”、“<”都是xml特殊字符,理想情况下,行为应该相同。

8yoxcaq7

8yoxcaq72#

sax解析器读取左括号作为子元素标记的开始,而右括号表示元素标记的结束。如果解析器当前不在元素标记中,那么右括号可能被认为是合法的,并且被接受。
如果尚未解决此问题,则需要按如下方式定义语句以对左括号和右括号进行xml转义:

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

这在属性文件中可以正常工作,但是如果您使用 -Dkey=value 表示法,则需要将参数括在引号中,以避免shell错误地解释符号:

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

相关问题