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

The ')' character, hexadecimal value 0x29, cannot be included in a name

我在以编程方式为共享点计算字段设置公式时遇到问题,这是我生成的 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,不能包含在名称中。我必须转义括号吗?

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 部分将它们更改为 "