我正在使用以下正则表达式来匹配 <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 中的某些 Adobe LiveCycle Designer 字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54470981/