为何XmlAttribute的#text属性未在微软官方类定义文档中记载?
关于XmlAttribute未记载的
#text属性的说明 XmlAttribute的官方文档中仅明确记载了Value属性,但在PowerShell里你可以通过#text属性正常访问属性值,背后原因如下:
本质等价性:
#text属性和Value属性指向的是同一内容。在XML DOM模型中,属性的文本内容会被抽象为#text节点,PowerShell通过自身的.NET适配器(PSAdapter)将这个节点内容以动态属性的形式暴露出来,方便用户以更贴近DOM节点的逻辑操作XML。文档缺失的原因:这个
#text属性并非.NET框架原生定义的属性,而是PowerShell为简化XML操作额外提供的语法糖,因此不会出现在微软官方的.NET XmlAttribute文档中。相关使用场景的说明主要散见于PowerShell社区讨论和实战指南里。使用建议:虽然
#text可以正常使用,但从兼容性和规范性角度,更推荐使用官方文档记载的Value属性——它是.NET框架原生支持的标准属性,跨环境使用的可靠性更强。
附上你提供的可运行代码示例:
[SelectXmlInfo]$out = Select-Xml '//*[local-name()="svg"]/@viewBox' -Path $TheSVGFile $out | ForEach-Object { $_.Node.GetType() $_.Node.'#text' }
输出结果:
内容的提问来源于stack exchange,提问作者fmotion1
相关产品推荐
相关产品推荐

