读取 XML 文件的每一行

乔蒂

我想在 PowerShell 脚本中读取 XML 文件的每一行。Get-ContentXML 文件之后,我使用foreach语句来读取每个行元素。它不起作用。如何读取 XML 文件的每一行?

Test.xml

<?xml version="1.0" encoding="utf-8"?>
<Install-Plan>
    <ADSetup> ... </ADSetup>
    <SQLSetup>
        <SqlServerName>ServerName</SqlServerName>
        <SqlVersion>SQL2014</SqlVersion>
        <InstanceName>MSSQLSERVER</InstanceName>
        <SqlInstall>TRUE</SqlInstall>
        <SqlClientInstall>TRUE</SqlClientInstall>
        <RSInstall>TRUE</RSInstall>
        ...
    </SQLSetup>
</Install-Plan>

电源外壳:

[xml]$XmlData = Get-Content test.xml -ErrorAction Stop
$Config = $xmlData.SelectNodes("//Install-Plan");
$uConfigFile = $Config.CommonConfig.SQLSetup
foreach ($uconfigval in $uConfigFile) {
    switch ($uconfigval[0]) {
        "$SQLServerData.SQLSetup.Sqlserver"  {$uSQL_SERVER_NAME = $uconfigVal.Trim()}
        "$SQLServerData.SQLSetup.SqlVersion" {$uSQLVERSION = $uconfigVal[1].Trim()}
        ...
    }
安斯加·威彻斯

您发布的示例 XML 没有 node <CommonConfig>,因此$uConfigFile = $Config.CommonConfig.SQLSetup将产生空结果。此外,您switch语句的变量和条件完全关闭。

你真正想做的是这样的:

foreach ($node in $xmlData.SelectNodes('/Install-Plan/SQLSetup/*')) {
    switch ($node.Name) {
        'SqlServerName' { $uSQL_SERVER_NAME = $node.InnerText.Trim() }
        'SqlVersion'    { $uSQLVERSION = $node.InnerText.Trim() }
        ...
    }
}

或者(也许更好)填充哈希表而不是单个变量:

$cfg = @{}
foreach ($node in $xmlData.SelectNodes('/Install-Plan/SQLSetup/*')) {
    $cfg[$node.Name] = $node.InnerText.Trim()
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Scala,读取文件操作每一行,将每一行插入列表

来自分类Dev

Scala读取文件并分割和修改每一行

来自分类Dev

如何读取文件的每一行并添加if语句?

来自分类Dev

Bash从文件读取并解析每一行

来自分类Dev

读取文件的每一行-批处理脚本

来自分类Dev

如何逐行读取文件并拆分每一行

来自分类Dev

从文件读取,但不是每一行

来自分类Dev

更正输入文件以读取每一行

来自分类Dev

使excel导出多个XML文件中的每一行

来自分类Dev

使excel导出多个XML文件中的每一行

来自分类Dev

Perl读取每一行

来自分类Dev

用 Python 读取 XML 文件,在一行中搜索键并替换值

来自分类Dev

每读取一行输入文件,将文件扩展为多个.csv文件

来自分类Dev

将我从文件读取的每一行保存为其他文件

来自分类Dev

R-如何在读取文件之前计算文件每一行的列数

来自分类Dev

Linux Bash Shell 读取日志文件将每一行与文件的重置进行比较

来自分类Dev

从文件中读取行,遍历每一行以及该行中的每个字符

来自分类Dev

从文件中读取行并输出具有行号的每一行

来自分类Dev

从文件中读取行并输出具有行号的每一行

来自分类Dev

从文件中读取“n”行并将每一行分配给不同的变量

来自分类Dev

Qt读取XML文件

来自分类Dev

从xml文件解析/读取öäü

来自分类Dev

读取大的xml文件

来自分类Dev

从gz文件读取xml

来自分类Dev

xml文件的部分读取

来自分类Dev

读取Java XML文件

来自分类Dev

从xml文件读取

来自分类Dev

读取xml文件属性

来自分类Dev

读取简单的XML文件