xml - 使用命名空间添加 XML 属性
问题描述
我正在尝试将元素添加到自动生成的 XML 文件中,然后我可以将其导入回生成器,但我遇到了一些命名空间属性的问题。
这是我要重新创建的内容:
<IP_Filter_Template_Guid dt:dt="string" xmlns:dt="urn:schemas-microsoft-com:datatypes">
这是我正在使用的代码:
$xml = [System.Xml.XmlDocument](Get-Content $xmldoc)
$child1element = $xml.CreateElement($rapname)
$child1element.SetAttribute("name", $rapname)
$child1 = $xml.Root.Children.Microsoft_Internet_Authentication_Service.Children.RadiusProfiles.Children.AppendChild($child1element)
$child2element = $xml.CreateElement("Properties")
$child2 = $child1.AppendChild($child2element)
$child3element1 = $xml.CreateElement("IP_Filter_Template_Guid", $xmlns)
$child3element1.SetAttribute("dt", "urn:schemas-microsoft-com:datatypes", "string")
$child3element1.SetAttribute("dt", "urn:schemas-microsoft-com:xmlns", "urn:schemas-microsoft-com:datatypes")
$child3 = $child2.AppendChild($child3element1)
$child3element1.AppendChild($xml.CreateTextNode("{00000000-0000-0000-0000-000000000000}"))
$xml.Save("c:\xml.xml")
这是我为元素获得的输出:
<IP_Filter_Template_Guid d9p1:dt="urn:schemas-microsoft-com:datatypes" dt:dt="string" xmlns:d9p1="urn:schemas-microsoft-com:xmlns">
解决方案
首先将新节点创建为纯 XML 节点(不需要命名空间管理器):
$node = $xml.CreateElement('IP_Filter_Template_Guid')
使用所需的命名空间创建一个新的属性节点并为其分配一个值:
$ns = 'urn:schemas-microsoft-com:datatypes'
$attr = $xml.CreateAttribute('dt', 'dt', $ns)
$attr.Value = 'string'
SetAttributeNode()
使用( not SetAttribute()
!)将属性添加到 XML 节点:
$node.SetAttributeNode($attr)
示范:
PS C:\> [xml]$xml = '<root/>' PS C:\> $node = $xml.CreateElement('IP_Filter_Template_Guid') PS C:\> $ns = 'urn:schemas-microsoft-com :datatypes' PS C:\> $attr = $xml.CreateAttribute('dt', 'dt', $ns) PS C:\> $attr.Value = 'string' PS C:\> $node.SetAttributeNode( $attr) >$null PS C:\> $node.OuterXml <IP_Filter_Template_Guid dt:dt="string" xmlns:dt="urn:schemas-microsoft-com:datatypes" />
推荐阅读
- angular - ./node_modules/@angular/fire/messaging/messaging.js 中的错误
- android - 列表中的列表?
- meteor - 在将 Jest 框架应用于 Meteor 项目时,不确定如何集成 Meteor 和 Jest
- php - 从隐藏在其他数组中的特定节点中获取特定节点
- angular - 使用基于属性值的类
- linkedin - 使用linkedin的Auth0登录获取公共个人资料URL
- ruby-on-rails - 如何构建具有动态范围的 has_many 关联?
- python - 如何将具有 ResNet 等非序列架构的 Keras 模型拆分为子模型?
- c# - Unity - 我如何将铅笔移动到高于鼠标的位置
- python - 连接到 mongo 数据库,给定 ssh 密钥