xml - Powershell无法读取xml文件?
问题描述
我有一个用于读取 xml 文件的 powershell 脚本。这是代码
$configPath = Join-Path $PSScriptRoot 'config.xml'
Write-Host $configPath
[xml]$XmlDocument = [xml](get-content $configPath)
Write-Host $XmlDocument
foreach($line in Get-Content $configPath) {
Write-Host $line
}
当我打印$XmlDocument
它时出现空字符串,但是该文件是有效的,因为当我执行 for 循环以一次读取一行时,它可以工作并打印
<employees>
<employee id="101">
<name>Frankie Johnny</name>
<age>36</age>
</employee>
<employee id="102">
<name>Elvis Presley</name>
<age>79</age>
</employee>
<employee id="301">
<name>Ella Fitzgerald</name>
<age>102</age>
</employee>
</employees>
有谁知道是什么问题?
谢谢
解决方案
使用Write-Output
,不使用Write-Host
。我使用自己的 XML 文档进行了测试,[xml]$XmlDocument
包含数据,但没有输出任何Write-Host
. 我不完全确定为什么Write-Host
不打印 $XmlDocument 的内容,但我确信它与周围的管道异常Write-Host
有关(这会中断管道)。
您几乎应该始终避免Write-Host
使用Write-Output
. 另请参阅Write-Warning
、Write-Verbose
、Write-Error
和cmdlet 以将信息直接输出到控制台主机Write-Debug
以外的其他流。STDOUT
请参阅这篇文章,了解有关为什么应尽可能避免Write-Host
以及如何将其视为有害的更多信息。
推荐阅读
- css - Chart.js 甜甜圈画布填充
- javascript - 在非内联脚本方法中获取内联脚本的脚本元素
- linux - 引导分区快满了:如何清除或扩展它?
- c++ - 从数组中的文件中读取多个浮点数
- c# - 理解/翻译 C# 事件访问器代码(特别是 += 运算符)到 VB
- java - 根据 4 个 JRadioButtons 的组合执行操作
- three.js - 如何在 Three.js 中移动对象(在移动设备上)
- java - 在 SpringBoot 应用程序中下载时 Azure BlobNotFound
- kubernetes - 如何在一个 Kubernetes 的 pod 中实现后处理容器
- spring-boot - 作业执行侦听器未能在作业执行上下文表中存储值