xml - 获取 XML 文件中字符串的 XPath
问题描述
我有一些非常大的 XML 文件
<Frequency>14400</Frequency>
它可以在文件中的任何位置,因为所有文件都有不同的架构,所以我无法使用预定义的 XPath 进行搜索。
我只需要找到所有频率 <= 14400 的节点并显示 XPath
很好的例子是我在这里复制的代码,但我需要 XPath 而不是 PATH。
有什么解决办法吗?
Get-ChildItem -Recurse |
Select-String -Pattern ">60<" |
group Path |
select Name
c:\temp\xml.xml :::: /ManagementPack/Monitoring/Discoveries/Discovery/DataSource/Frequency 60 c:\temp\xml2.xml :::: /ManagementPack/Monitoring/Discoveries/Discovery/DataSource/Frequency 100
解决方案
使用本地名称XPATH 函数怎么样?
这会忽略命名空间,因此它适用于任何 XML。使用这种技术,您不需要从元素中查找 XPATH(这并不简单)。
适用于您的代码:
[xml]$xml = Get-Content ("<some_path>")
$result = $xml.SelectSingleNode("//*[local-name()='Frequency' and number(text()) <= 1440]")
推荐阅读
- python - 在 csv 文件中查找数字的最接近价格
- pyspark - 如何使用 Dataproc Pyspark 在 BigQuery 中创建外部表
- firebase - 带有通配符路径的 Firestore 云功能触发器
- ruby-on-rails - 如何查找现有客户并将其分配给发票
- qt - 使用 .osm 或 .osm.pbf 在 qt qml 中加载离线地图
- mongodb - 不使用 touch 命令重新加热 mongodb
- python - 用硒进行网页抓取,页面不加载
- r - lapply pdf 输出覆盖 pdf 而不是创建新的
- swift - 快速复制现有领域数据库的问题
- c# - 如何在五个表/视图查询中返回唯一的产品 ID?