')'字符,十六进制值0x29,不能包含在名称中

时间:2017-06-08 12:57:39

标签: xml sharepoint calculated-field

我通过以编程方式设置sharepoint计算字段的公式来解决问题,这是我生成的xml:

<Field ID='3bc3a7ac-a5bc-49e0-b430-a987ddac42f7' Type='Calculated' Name='Comparison' StaticName='Comparison' DisplayName='Comparison' ResultType='Text' Required='TRUE' ReadOnly='TRUE'>
  <Formula>=IF(AND(CampoA>CampoB,CampoA<CampoC),&quot;OK&quot;,&quot;Not OK&quot;)</Formula>
  <FieldRefs>
    <FieldRef Name='CampoC'/>
    <FieldRef Name='CampoB'/>
    <FieldRef Name='CampoA'/>
  </FieldRefs>
</Field>

它给了我错误:')'字符,十六进制值0x29,不能包含在名称中。我必须逃避括号吗?

1 个答案:

答案 0 :(得分:2)

Formula元素中,您需要使用<转义&lt; ...

<Field ID='3bc3a7ac-a5bc-49e0-b430-a987ddac42f7' Type='Calculated' Name='Comparison' StaticName='Comparison' DisplayName='Comparison' ResultType='Text' Required='TRUE' ReadOnly='TRUE'>
 <Formula>=IF(AND(CampoA>CampoB,CampoA&lt;CampoC),&quot;OK&quot;,&quot;Not OK&quot;)</Formula>
 <FieldRefs>
  <FieldRef Name='CampoC'/>
  <FieldRef Name='CampoB'/>
  <FieldRef Name='CampoA'/>
 </FieldRefs>
</Field>

如果您有文字&字符,则还需要使用&amp;来逃避这些字符。

另一个选择是将内容包装在CDATA ...

<Field ID='3bc3a7ac-a5bc-49e0-b430-a987ddac42f7' Type='Calculated' Name='Comparison' StaticName='Comparison' DisplayName='Comparison' ResultType='Text' Required='TRUE' ReadOnly='TRUE'>
    <Formula><![CDATA[=IF(AND(CampoA>CampoB,CampoA<CampoC),&quot;OK&quot;,&quot;Not OK&quot;)]]></Formula>
    <FieldRefs>
        <FieldRef Name='CampoC'/>
        <FieldRef Name='CampoB'/>
        <FieldRef Name='CampoA'/>
    </FieldRefs>
</Field>

我不确定你的公式中是否需要文字&quot;。如果没有,请将其更改为CDATA部分中的"