标题: [问题求助] powershell直接取zip文件夹下xml文件下某标签的值 [打印本页]
作者: 小白龙 时间: 2022-8-1 13:22 标题: 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>
作者: flashercs 时间: 2022-8-1 15:59
- $xmldoc=[xml](get-content B.xml)
- $xmldoc.package.metadata.version
复制代码
作者: 小白龙 时间: 2022-8-1 16:07
回复 2# flashercs
多谢大佬, xml在zip文件中, 怎样直接获取内容?
作者: flashercs 时间: 2022-8-1 17:40
回复 3# 小白龙 - try {
- # 文件名是case-sensitive
- Add-Type -AssemblyName System.IO.Compression.FileSystem -ErrorAction Stop
- $archive = [System.IO.Compression.ZipFile]::Open('.\b.zip', 'Read')
- $entry = $archive.GetEntry('b.xml')
- $stream = $entry.Open()
- $xmldoc = New-Object System.Xml.XmlDocument
- $xmldoc.Load($stream)
- $xmldoc.package.metadata.version
- } finally {
- if ($stream) {
- $stream.Close()
- }
- if ($archive) {
- $archive.Dispose()
- }
- }
- trap {}
复制代码
ps5.1以上
作者: 小白龙 时间: 2022-8-1 20:49
回复 4# flashercs
感谢,大侠,
如果zip中只知道有一个xml文件, 但是不知道文件名, 用这个方法, 还有解吗
作者: flashercs 时间: 2022-8-1 21:01
回复 5# 小白龙 - try {
- # 文件名是case-sensitive
- Add-Type -AssemblyName System.IO.Compression.FileSystem -ErrorAction Stop
- $archive = [System.IO.Compression.ZipFile]::Open('.\b.zip', 'Read')
- $xmldoc = New-Object System.Xml.XmlDocument
- foreach ($entry in $archive.Entries) {
- if ($entry.FullName.EndsWith('.xml', [System.StringComparison]::OrdinalIgnoreCase)) {
- $stream = $entry.Open()
- $xmldoc.Load($stream)
- $xmldoc.package.metadata.version
- $stream.Close()
- }
- }
- } finally {
- if ($stream) {
- $stream.Close()
- }
- if ($archive) {
- $archive.Dispose()
- }
- }
- trap {}
复制代码
作者: 小白龙 时间: 2022-8-2 09:59
回复 6# flashercs
大佬太牛了, 实在佩服
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |