【问题标题】:The ')' character, hexadecimal value 0x29, cannot be included in a name')' 字符,十六进制值 0x29,不能包含在名称中
【发布时间】:2017-06-08 23:22:14
【问题描述】:

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

【问题讨论】:

  • 你需要用&amp;lt;转义
  • &amp;gt;&amp;gt;
  • 转义 > 不是绝对必要的,但不会有什么坏处。
  • 我已经转义了 > 和
  • 如果您的 xml 中有 &lt;,它会期望一个新元素,因此转义它至关重要。我一开始不知道它会如何工作。

标签: xml sharepoint calculated-field


【解决方案1】:

Formula 元素内,您需要使用&amp;lt; 转义&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;amp; 字符,您还需要使用 &amp;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>

我不确定您是否希望在公式中使用文字 &amp;quot;。如果不是,请将其更改为 CDATA 部分中的 "

【讨论】:

  • =IF(AND(CampoA&gtCampoB,CampoA 我已经转义了内容,但它在有 &gt 的位置 209 处给了我一个错误
  • @OuterSpace - 那是因为你没有用; 正确关闭实体引用(对于 gt 和 lt)
  • 完美无瑕,直截了当的回答,我自己做得再好不过了。但是我是wounder,第一组代码用1个空格索引,第二个不是。当我在编辑时,我遇到了代码会消失的问题。你也遇到过吗?
  • @OuterSpace 然后点赞并标记它,它表示非常感谢。
  • @Xorifelse - 谢谢!我没有注意到代码缩进的区别。在第一组中,我刚刚从问题中复制/粘贴/修改。在第二组中,我从 oXygen 复制,在那里我仔细检查了我的工作。只要代码前有 4 个空格,它应该可以正常工作。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多