Powershell XML处理非常慢

Powershell XML处理非常慢

我有几个(20 个)svg 字体(基于 xml 的字体格式),平均每个字体大约 300kb,包含大约 100 个字形标签。我想用 Inkscape 处理每个字形。因此,我想用 Powershell 脚本进行的 XML 处理部分是:

  1. 将字体打开为 XML
  2. 迭代每个字形,获取属性值并保存以此值参数化的临时 svg(XML)
  3. 使用 Inkscape 处理此文件
  4. 阅读每个文件
  5. 使用新数据构建了一个新的字体文件
  6. 保存字体,删除字形

我已经阅读了很多 Powershell XML 教程并尝试了几次,但有一件事我不知道是什么问题,但我用这一行从字体中获取了每个字形:

$nodes = Select-Xml -Content $( Get-Content -Path $_.FullName )  -XPath "//glyph" -Namespace $namespaces

需要很多时间,并且只能提供 60 个字形,即使字体中还有更多字形。其余脚本都运行正常,但如果我想处理所有 20 个字体(将来会更多),则需要一整天的时间,而且并非所有字形都得到处理。

那么,读取文件和解析 XML 是否失败了?为什么速度如此之慢,为什么没有处理所有字形?

答案1

为您提供以下几种选择:

  1. Select-Xml -Path test.xml -XPath "//*[local-name()='glyph']")
  2. [xml] $x = gc test.xml ; $x.SelectNodes("//*[local-name()='glyph']")

两者都可以快速选择 95 个节点。我测试了您放入粘贴箱的内容。

相关内容