PowerShell如何提取XML标签属性值并导出保存到TXT文件
PowerShell 提取XML节点属性导出TXT解决方案
现有代码问题
- XPath 表达式未闭合单引号,存在语法错误
- Select-Xml 直接返回节点对象,未做格式转换就输出到文件,无法得到预期的文本内容
- 未对节点的属性集合做遍历拼接,不符合要求的输出格式
前置校验
你提供的示例XML中yes=19未给属性值加引号,不符合标准XML语法,请先修正为yes="19",否则会出现XML解析错误。
完整可运行代码
# 读取并解析为XML对象,指定编码避免乱码 [xml]$xmlContent = Get-Content -Path "C:\Path\To\File.xml" -Encoding UTF8 # 匹配带finished属性的Report节点,提取节点本体 $reportNodes = $xmlContent | Select-Xml -XPath '//Report[@finished]' | Select-Object -ExpandProperty Node $outputContent = @() foreach ($node in $reportNodes) { # 遍历节点所有属性拼接格式 $attrSegments = foreach ($attr in $node.Attributes) { if ($attr.Name -eq 'name') { "$($attr.Name): $($attr.Value)" } else { "$($attr.Name) $($attr.Value)" } } $outputContent += $attrSegments -join ', ' } # 导出到TXT文件 $outputContent | Out-File -FilePath "result.txt" -Encoding UTF8
适配说明
如果你的XML中只有单个符合条件的Report节点,上述代码直接运行即可;如果存在多个符合条件的节点,每个节点的属性内容会单独占一行输出到TXT文件中。
内容的提问来源于stack exchange,提问作者makoto
相关产品推荐
相关产品推荐

