RegEx/XPath 以匹配 XML 中的某些 Adob​​e LiveCycle Designer 字段

标签 regex xml xpath livecycle-designer xfa

我正在使用以下正则表达式来匹配 <field> Adobe LiveCycle Designer XFA 表单的 XML View 中的元素。

检查正则表达式 (?i)<(field)[\s\S]*?<\/\1>并在此处提供示例 XML:https://regex101.com/r/80gkRp/1

上面的 RegEx 运行良好,我可以很好地使用它。但是,我发现很难限制某些元素类型的匹配。

假设,例如,我想匹配某些具有属性 presence="hidden" 的字段元素并且必须有内部 button元素和 <bind>具有属性 match 的元素必须等于 none (即 bind match='none' 必须存在),如下所示:

<field bla bla bla name="First_Name" presence="hidden" bla bla bla>
  ... bla bla
  <ui>
    <button bla bla bla/>
  </ui>
  ...
  <bind match="none"/>
  ...
</field>``

请给我尽可能接近的解决方案,并且不需要满足上述复杂标准,至少能够匹配作为按钮的字段。

塔雷克

最佳答案

正则表达式绝对不是查询 XML 的最佳选择。我的建议是使用某种与 XML 相关的工具/框架/机制。 XPath 就是其中之一。在您的情况下,XPath 查询获取 field具有相应后代元素的元素将是:

//field[@presence = "hidden" and .//button and .//bind[@match = "none"]]

关于RegEx/XPath 以匹配 XML 中的某些 Adob​​e LiveCycle Designer 字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54470981/

相关文章:

regex - 删除R中字符串中大写字母的第一个实例之前的字符

xml - 具有规范化文档结构的 Solr

android - EditText高度根据文字大小变化

XSLT 与 SQL 类似的功能 "WHERE LIKE"

xpath - 来自网站的 Google 表格 IMPORTXML 文本字段

javascript - 如何在 Javascript 中以数组形式从字符串中仅获取 X 个数字

java - 正则表达式获取括号外的字符串

regex - 正则表达式查找单词之间的空格或字母和数字的组合(不在行尾)并用逗号替换

objective-c - 这是什么类型的 XML 文件?

Selenium 从 xpath 获取动态 id