首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用powershell读取带有空格的xml节点文本

如何使用powershell读取带有空格的xml节点文本
EN

Stack Overflow用户
提问于 2017-06-19 13:11:09
回答 2查看 1.2K关注 0票数 0

我想从我的配置文件中读取XML节点的文本。为此,我使用Xpath读取这些值。其中一个配置值是在它的conetents之间有一个空格,所以当我读到它只是返回值直到空白为止。我的配置文件名和内容如下所示: config.xml

代码语言:javascript
运行
复制
<?xml version="1.0" encoding="UTF-8"?>
<OpsConfig>
    <Tenant>mytenant_az1</Tenant>
    <Client>XYZ</Client>
    <ReviewID>a123456</ReviewID>
    <ReferenceID>ARTL_Is Correction_Rewind_Report</ReferenceID>
<OpsConfig>

除了标记ReferenceID之外,我还可以成功地读取标记值。以下是代码:

代码语言:javascript
运行
复制
$configFile = "config.xml"
[xml]$confXml = Get-Content $configFile
$refIds = $confXml | Select-XML -XPath "//OpsConfig/ReferenceID"
Write-Host $refIds

变量$refIds只返回"ARTL_Is“。它跳过了空格后的内容。我试图添加空间的十六进制值,但仍然没有返回整个值"ARTL_Is Correction_Rewind_Report“。

EN

回答 2

Stack Overflow用户

发布于 2017-06-19 14:30:48

您所面临的问题是因为闭包标签似乎缺失了。我不知道这是不是一个错误。但是,当我将它保存在那里并试图将内容作为XML解析来读取时,我就能够检索它。

你能试试这个吗?

代码语言:javascript
运行
复制
<OpsConfig>
    <Tenant>mytenant_az1</Tenant>
    <Client>XYZ</Client>
    <ReviewID>a123456</ReviewID>
    <ReferenceID>ARTL_Is Correction_Rewind_Report</ReferenceID>
</OpsConfig>

我在PS第4版只是FYI。也请查看PS版本。

票数 0
EN

Stack Overflow用户

发布于 2017-06-20 16:51:43

因为您已经在使用Get-Content,所以只需调用变量来获取它的节点。

代码语言:javascript
运行
复制
[Xml]$ConfXml = Get-Content ".\config.xml"
$RefIds = $ConfXml.OpsConfig.ReferenceID
Write "$RefIds"

如果您的关注点是多个引用is,则可以使用ForEach解析它们。

代码语言:javascript
运行
复制
ForEach ($i in $ConfXml.OpsConfig.ReferenceID) { Do stuff with $i }

或者,

代码语言:javascript
运行
复制
ForEach ($i in $ConfXml.OpsConfig) { Do stuff with $i.ReferenceID }

使用此方法,变量中的xml属性只是一个字符串,不应该关心空格。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44631528

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档