转义保留字

2023-12-31

Sitecore 提供了一种转义 Sitecore 查询中包含不喜欢字符的单词的方法。此类字符包括连字符和空格。为了简化我的生活,我编写了一个简单的辅助函数,可以转义 Sitecore 查询的每个部分,并且它运行良好一段时间:

public static string EscapePath(string path){
    return Regex.Replace(path, @"([^/]+)", "#$1#").Replace("#*#", "*");
}

(the Replace("#*#","*")在那里,因为 Sitecore 不喜欢将星号包裹在散列中)。

正如我所说,这在一段时间内效果很好。今天,我遇到了一个失败的情况:

EscapePath("/sitecore/content/Seattle/OR/00010046");

转义序列看起来很无辜:

/#sitecore#/#content#/#Seattle#/#OR#/#00010046#

但 Sitecore 内的查询失败并显示以下消息Identifier, GUID or "*" expected at position 44。我将问题范围缩小到#OR#在询问中,猛然意识到是怎么回事。显然 Sitecore 独领风骚OR,即使在转义时,也意味着您将两个或多个查询连接在一起(即,作为保留字OR)。明显的修复方法是替换所有实例#OR# with *[@@name='OR'],效果很好。然而,对我来说,这看起来像是一个黑客。

我知道这很可能只会发生在名为OR and AND,但我找不到任何有关的文档SDN http://sdn.sitecore.net/其中讨论了 Sitecore 查询中的任何保留字,除了将查询包装在哈希值中之外,没有提及如何正确转义查询。

目前是否有一种标准的方法可以保证我不会遇到这个问题?或者,更好的是,有一份概述 Sitecore 查询中所有保留字的文档?我可能会坚持使用 XPath 语法,只处理(已记录的)边缘情况并转义这些值,但如果可能的话,我想坚持使用 Sitecore 查询。


您可以在以下方法中看到将引发此异常的“保留”词列表

Sitecore.Data.Query.QueryTokenBuilder.Identifier(string)

基本上该列表是:

  • ancestor
  • and
  • child
  • 后裔
  • div
  • false
  • 下列的
  • mod
  • or
  • parent
  • self
  • true
  • xor

在我有限的研究中,我没有找到转义这些关键字的方法,因此您可能需要围绕此列表进行硬编码。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

转义保留字 的相关文章

随机推荐

  • ClickOnce 应用程序不接受命令行参数

    我有一个采用命令行参数的 VB NET 应用程序 如果我关闭 Visual Studio 的 ClickOnce 安全设置 调试时它可以正常工作 当我尝试通过 ClickOnce 在计算机上安装应用程序并尝试使用参数运行它时 会出现此问题
  • 为什么装饰器是一种结构性设计模式而不是行为性设计模式?

    我认为自己拥有 GoF 设计模式的中级知识 然而 当我将这些模式分类为结构模式和行为模式时 我感到很困惑 我对创造模式没有任何困惑 来自维基百科 装饰器模式 在面向对象编程中 装饰器模式是一种允许behavior静态或动态地添加到单个对象
  • Haskell有foldlM'吗?

    如何严格折叠 monad Data Foldable http www haskell org ghc docs 6 12 2 html libraries base 4 2 0 1 Data Foldable html有严格的foldl
  • REBOL 中的 If...else if...else

    我注意到 REBOL 没有内置if elsif else语法 就像这样 theVar 60 This won t work if theVar gt 60 print Greater than 60 elsif theVar 3 print
  • 如何仅使用 CSS 制作网格(如方格纸网格)?

    如何仅使用 CSS 制作网格 如方格纸网格 我只想仅使用 CSS 制作一张虚拟网格纸 要制作网格 您可以使用 CSS 渐变 它适用于所有现代浏览器 参见卡尼乌斯 http caniuse com search linear gradient
  • 如何调用自定义函数作为 jQuery 函数链的一部分

    这似乎是一件很简单的事情 但我找不到jQuery函数来处理这个问题 例如 div show sayHi function sayHi obj obj html hi sayHi 不是一个jQuery函数 因此不能在此上下文中调用它 你需要这
  • 不使用 Javascript 从 Google 地图获取路线和方向?

    因此 如果您正在编写一个应用程序 而不是网站 并且需要解析从一个位置到另一个位置的路线 那么如何在不使用 Javascript 的情况下从 Google 地图获取信息呢 我想知道 Google 地图上是否有任何一组特殊的 URL 或 API
  • 找不到盒子“laravel/homestead”

    我已经下载了laravel homestead手动装箱here https atlas hashicorp com laravel boxes homestead 我成功添加了盒子 vagrant box add file path to
  • 在 Bash 中,有没有办法在双引号中将变量展开两次?

    为了调试我的脚本 我想在每个输出的开头添加内部变量 FUNCNAME 和 LINENO 这样我就知道输出发生在哪个函数和行号上 foo local bar something echo FUNCNAME LINENO I just set
  • Pyinstaller 设置图标不改变

    当我使用命令时 pyinstaller exe icon test ico F noconsole test py 所有图标均不会更改为 test ico 一些图标保留为 pyinstaller 的默认图标 Why 所有图标均更改为 视窗
  • 使用字母间距填充div

    我遇到的问题是填写div与文本使用letter spacing 主要问题是我不知道宽度div 首先我想使用 text align justify 但从那以后我一直在黑暗中奔跑 不知道如何解决这个问题 我猜想一些脚本魔法可能会解决这个问题 一
  • 冲突的类型和先前的 x 声明在这里......什么?

    当我有时间的时候 我已经自学了几个月的 C 语言 但我遇到了一个我不知道如何解决的问题 具体来说 当我尝试使用 gcc 编译它时 我得到 geometry c 8 error conflicting types for trapezoid
  • 来自带有时区和夏令时的字符串的 Qt QDateTime

    我正在从字符串插入时间 QDateTime time QDateTime fromString Wed Mar 26 22 37 40 2019 GMT 08 qDebug lt
  • 从通知区域发出的卡通语音气泡叫什么?如何创建一个?

    谁能告诉我以下弹出窗口的名称是什么 如何为我的应用程序创建这样的弹出窗口 To be more specific this is indeed called a Notification http msdn microsoft com en
  • Clojure中如何加载程序资源

    如何在 Clojure 程序中加载图标 字符串 图形元素 脚本等程序资源 我使用的项目布局类似于许多 Java 项目中的布局 其中有一个 资源 目录挂在 源 目录下 jar 文件是从源代码创建的并包含资源 但我似乎无法像在 Java 中那样
  • 将 JWK json 转换为公钥 golang (lestrrat-go)

    我使用 JWKS 格式从身份验证服务提供公钥 该公钥可用于验证来自该身份验证服务的令牌 但是 要执行验证 我需要从 JWK 重建公钥 我该如何转换它 type JWKeys struct Keys JWKey json keys type
  • 多选到数组

  • 使用 SharePoint 客户端对象模型检查列表列是否存在?

    使用 SharePoint 2010 中的客户端对象模型 C 如何确定给定列表中是否存在指定的列 字段 名称 谢谢 魔术安迪 刚刚在搜索相同的东西时发现了这个 但看起来 Sharepoint 2010 有内置的东西 至少对于服务器模型 li
  • 图像未通过 android webview 加载

    我有一个加载网页的网络视图 有时该网页中有图片 但是 我遇到了 2 个图像无法加载的情况 并且每个情况都给出了不同的结果 结果 1 网页已加载 但图像未加载 使用的格式 jpeg 结果 2 网页已加载 但图像未加载 然而 在该图像所在的位置
  • 转义保留字

    Sitecore 提供了一种转义 Sitecore 查询中包含不喜欢字符的单词的方法 此类字符包括连字符和空格 为了简化我的生活 我编写了一个简单的辅助函数 可以转义 Sitecore 查询的每个部分 并且它运行良好一段时间 public