[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[问题求助] powershell直接取zip文件夹下xml文件下某标签的值

本帖最后由 小白龙 于 2022-8-1 13:33 编辑

我有一个名为A.zip的文件, 里面有个B.xml文件, 内容如下

powershell能直接取xml文件下的 version 标签的值[1.5]吗?  对xml不熟悉, 请求高手帮助, 谢谢


<package>
  <metadata>
    <id>www</id>
    <version>1.5</version>
  </metadata>
</package>

回复 6# flashercs

大佬太牛了, 实在佩服

TOP

回复 5# 小白龙
  1. try {
  2.   # 文件名是case-sensitive
  3.   Add-Type -AssemblyName System.IO.Compression.FileSystem -ErrorAction Stop
  4.   $archive = [System.IO.Compression.ZipFile]::Open('.\b.zip', 'Read')
  5.   $xmldoc = New-Object System.Xml.XmlDocument
  6.   foreach ($entry in $archive.Entries) {
  7.     if ($entry.FullName.EndsWith('.xml', [System.StringComparison]::OrdinalIgnoreCase)) {
  8.       $stream = $entry.Open()
  9.       $xmldoc.Load($stream)
  10.       $xmldoc.package.metadata.version
  11.       $stream.Close()
  12.     }
  13.   }
  14. } finally {
  15.   if ($stream) {
  16.     $stream.Close()
  17.   }
  18.   if ($archive) {
  19.     $archive.Dispose()
  20.   }
  21. }
  22. trap {}
复制代码
微信:flashercs
QQ:49908356

TOP

回复 4# flashercs


感谢,大侠,
如果zip中只知道有一个xml文件, 但是不知道文件名, 用这个方法, 还有解吗

TOP

回复 3# 小白龙
  1. try {
  2.   # 文件名是case-sensitive
  3.   Add-Type -AssemblyName System.IO.Compression.FileSystem -ErrorAction Stop
  4.   $archive = [System.IO.Compression.ZipFile]::Open('.\b.zip', 'Read')
  5.   $entry = $archive.GetEntry('b.xml')
  6.   $stream = $entry.Open()
  7.   $xmldoc = New-Object System.Xml.XmlDocument
  8.   $xmldoc.Load($stream)
  9.   $xmldoc.package.metadata.version
  10. } finally {
  11.   if ($stream) {
  12.     $stream.Close()
  13.   }
  14.   if ($archive) {
  15.     $archive.Dispose()
  16.   }
  17. }
  18. trap {}
复制代码
ps5.1以上
1

评分人数

微信:flashercs
QQ:49908356

TOP

回复 2# flashercs


  多谢大佬, xml在zip文件中,   怎样直接获取内容?

TOP

  1. $xmldoc=[xml](get-content B.xml)
  2. $xmldoc.package.metadata.version
复制代码
微信:flashercs
QQ:49908356

TOP

返回列表