You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用PowerShell解析内部XML并转换为.properties文件?

解决PowerShell中XML片段转.properties文件的问题

步骤1:解析XML片段

你提供的是无根节点的XML片段,需要先包裹为完整XML文档才能被PowerShell解析:

# 定义你的XML片段内容
$xmlContent = @"
<sl-test.protocol>HTTP</sl-test.protocol>
<sl-test.responseTimeout>14000</sl-test.responseTimeout>
<env>${myenv}</env>
<http.port>8081</http.port>
"@

# 包裹成带根节点的完整XML结构
$fullXml = [xml]"<root>$xmlContent</root>"

步骤2:遍历节点生成转义后的键值对

遍历根节点下所有子节点,提取节点名作为键,节点文本作为值,同时转义所有$符号:

$keyValuePairs = foreach ($node in $fullXml.root.ChildNodes) {
    # 转义值中的$符号,替换为`$
    $escapedValue = $node.InnerText -replace '\$', '`$'
    # 拼接成键值对格式
    "$($node.Name)=$escapedValue"
}

# 用换行符连接所有键值对,得到目标字符串
$propertiesContent = $keyValuePairs -join "`n"

步骤3:生成.properties文件

用你熟悉的方式写入文件(如果文件已存在,-Force参数会覆盖原有内容):

# 直接创建或覆盖文件并写入内容
New-Item -Name "mule-app.properties" -ItemType "file" -Value $propertiesContent -Force

# 若文件已存在,也可使用Set-Content更直观
# Set-Content -Path "mule-app.properties" -Value $propertiesContent -Force

最终效果

生成的mule-app.properties内容如下:

sl-test.protocol=HTTP
sl-test.responseTimeout=14000
env=`${myenv}
http.port=8081

关键说明

  • 动态适配:不管XML中有多少节点,代码都会自动遍历所有子节点生成键值对,无需硬编码
  • 转义逻辑:通过-replace正则替换实现$符号的转义,符合你要求的格式
  • XML解析:必须添加根节点,否则PowerShell的[xml]类型无法正确解析片段内容

内容的提问来源于stack exchange,提问作者Harry

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 19:06:18