PowerShell 如何为新建的XML元素设置标签内部文本内容
解决方案
操作System.Xml DOM对象给XML元素加内部文本,不需要复杂处理,只要给创建好的元素对象赋值*InnerText*属性即可,赋值后序列化输出时会自动把原本的自闭合标签转成带内容的非闭合标签。
具体代码改造步骤
- 完全保留你原本创建元素、设置属性、挂载到父节点的逻辑,仅需在挂载节点前加一行InnerText赋值即可:
# 原有创建元素逻辑保持不变 $MediaSizeWidth = $XmlDocument.CreateElement("psk:MediaSizeWidth"," ") $MediaSizeWidth.SetAttribute("psf2:psftype","ScoredProperty") $MediaSizeWidth.SetAttribute("xsi:type","xsd:integer") # 新增:给元素设置内部文本,替换为你需要的实际数值 $MediaSizeWidth.InnerText = "some_other_number_here" # 原有挂载逻辑保持不变 $node.appendChild($MediaSizeWidth)
- 同理处理
MediaSizeHeight元素时,使用完全一致的逻辑即可:
$MediaSizeHeight = $XmlDocument.CreateElement("psk:MediaSizeHeight"," ") $MediaSizeHeight.SetAttribute("psf2:psftype","ScoredProperty") $MediaSizeHeight.SetAttribute("xsi:type","xsd:integer") # 给高度元素设置内部文本 $MediaSizeHeight.InnerText = "some_number_here" $node.appendChild($MediaSizeHeight)
注意事项
- 不要给元素直接用
Value属性赋值,该属性适用于纯文本节点;使用InnerText赋值时,DOM会自动做合法的XML转义,避免内容里的特殊字符破坏XML结构。 - 赋值数字类型内容时不需要手动转字符串,PowerShell会自动完成类型转换写入。
- 只要元素的InnerText不是空值,XML序列化时就不会输出自闭合形式,完全匹配你需要的目标XML结构。
内容的提问来源于stack exchange,提问作者The amateur programmer
相关产品推荐
相关产品推荐

