选择带有Powershell注释的模块

时间:2018-12-20 13:28:28

标签: xml powershell pom.xml

我要选择带有注释行的模块。

<modules>
    <module>com.umut.web</module><!--auto-->
    <module>com.umut.oaservice</module>
    <module>com.umut.signaturephotoservice</module>
  </modules>

powershell代码=

[string]$modules=""
foreach ($module in $xmlFile.project.modules.module) {

  Write-Output $module.'#comment'  

}

2 个答案:

答案 0 :(得分:4)

我认为您要问的是如何在xml中直接找到实际上在其后面具有注释元素的<module>,对吗?

在这种情况下,可以执行以下操作:

[xml]$xmlFile = @"
<project>
    <modules>
        <module>com.umut.web</module>
        <module>com.umut.oaservice</module><!--auto-->
        <module>com.umut.signaturephotoservice</module>
    </modules>
</project>
"@

foreach ($node in $xmlFile.project.modules.ChildNodes) {
    if ($node.NodeType -eq 'Comment') {
        # if this comment node following a childnode within 'modules' 
        if ($node.PreviousSibling) {
            [PSCustomObject]@{
                'module'      = $node.PreviousSibling            # the module element (System.Xml.XmlElement object)
                'moduleText'  = $node.PreviousSibling.InnerText  # the text inside this module element
                'comment'     = $node                            # the comment element (System.Xml.XmlComment)
                'commentText' = $node.InnerText                  # the text inside the comment
            }
            break
        }
    }
}

它发出带有四个属性的PSCustomObject,如果搜索未产生任何结果,则不显示任何内容。

module moduleText         comment  commentText
------ ----------         -------  -----------
module com.umut.oaservice #comment auto

答案 1 :(得分:0)

我认为您在io中的水平过高。

该怎么办?

fiber