【发布时间】:2023-01-16 20:38:54
【问题描述】:
我想在没有 cmets 的情况下获取内容并部分成功,但是多行注释很糟糕。
源代码:
<add key="Service.Cat" value="xxxxxx" provider-name="SQL" date-format="yyyy-MM-dd HH:mm:ss"> <counters /> </add> <!-- <add key="XXXX" value="SQL;Persist Security Info=False;User ID=xxxxx;Password=;Initial Catalog=xxxxx;Data Source=xxxxxx" provider-name="SQL" date-format="yyyy-MM-dd HH:mm:ss"> <counters /> </add> <add key="LB" value="SQL;Initial Catalog=FTU;Data Source=xxx.xxx.xxx;Integrated Security=xxxx" provider-name="SQL" date-format="yyyy-MM-dd HH:mm:ss"> <counters /> </add>--> <add key="xxxxxx" value="Initial Catalog=xzxxx;Data Source=xxxxxx;Trusted_Connection=yes;" provider-name="SQL" date-format="yyyy-MM-dd HH:mm:ss"> <counters />
电源外壳代码:
Get-Content -Encoding UTF8 -Path 'C:\config1.xml'| % {$_ -replace ("<!--([\s\S]+?)-->","") } | out-file C:\config_temp.xml
但是评论仍然存在,而一行通常被删除。
电源外壳代码:
Get-Content -Encoding UTF8 -Path 'C:\config1.xml'| % {$_ -replace ("<!--([\s\S]+?)-->","") } | out-file C:\config_temp.xml
但是评论仍然存在,而一行通常被删除。
【问题讨论】:
-
不要使用正则表达式处理 XML,这是一个大错——而且没有必要,PowerShell 具有完整的 XML 支持。例如。
$x = [xml] (Get-Content 'myfile'); $comments = $x.SelectNodes('//comment()'); foreach ($comment in $comments) { $comment.ParentNode.RemoveChild($comment) | Out-Null }; Set-Content 'newfile' $x.InnerXml。
标签: xml windows powershell