PowerShell读取嵌套结构不一致的XML并输出列格式的问题
调整后的可运行代码
Select-Xml -Path D:\Temp\meta.xml -XPath '/EntityType/Property' | ForEach-Object { $currentNode = $_.Node # 处理嵌套的Annotation节点,匹配对应Term取值,无匹配则返回空 $referenceName = ($currentNode.Annotation | Where-Object {$_.Term -eq 'Ref.ReferenceName'}).String $displayName = ($currentNode.Annotation | Where-Object {$_.Term -eq 'Display.DisplayName'}).String # 构造结构化对象用于列输出 [PSCustomObject]@{ PropertyName = $currentNode.Name PropertyType = $currentNode.Type Nullable = if ($currentNode.Nullable) { $currentNode.Nullable } else { 'true' } ReferenceName = $referenceName DisplayName = $displayName } } | Format-Table -AutoSize
说明
你之前的代码没有对嵌套的Annotation节点做属性提取,直接输出节点对象才导致格式混乱。上述代码会把所有字段统一展开为列格式,没有对应Annotation的节点相关字段会自动留空,保证所有行结构一致。
如果需要将结果导出为CSV文件,只需将末尾的Format-Table -AutoSize替换为Export-Csv -Path "D:\输出结果.csv" -Encoding UTF8 -NoTypeInformation即可。
内容的提问来源于stack exchange,提问作者SomeGuy
相关产品推荐
相关产品推荐

