我需要创建这个XML:
<?xml version="1.0" encoding="UTF-8"?>
<SRP xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="sample.xsd">
..但我知道如何使用XMLWriter编写命名空间(例如:
$XmlWriter.WriteAttributeString("xmlns", "xsi",
"http://www.w3.org/2000/xmlns/",
"http://www.w3.org/2001/XMLSchema-instance");
..我一直无法在变量中这样做:
[xml]$XML = New-Object System.Xml.XmlDocument
$Declaration=$XML.CreateXmlDeclaration("1.0","UTF-8",$Null)
$XML.AppendChild($Declaration)
我尝试过Namespacemanager的各种组合,但无济于事......这似乎是一个愚蠢的问题,但到目前为止我一直无法复制它(没有使用带有硬编码XML的here-string并将其转换为当然是XML,但我更喜欢以“正确”的方式做到:)
感谢大家到目前为止阅读:)
答案 0 :(得分:3)
您不需要命名空间管理器。只需使用正确的命名空间创建节点/属性,让XML处理器找出放置它们的位置。
对于你的例子:
$x = New-Object Xml.XmlDocument
$x.AppendChild($x.CreateXmlDeclaration("1.0","UTF-8",$null))
$node = $x.CreateElement("SRP")
$attr = $x.CreateAttribute("xsi","noNamespaceSchemaLocation","http://www.w3.org/2001/XMLSchema-instance")
$attr.Value="schema.xsd"
$node.SetAttributeNode($attr)
$x.AppendChild($node)
$x.OuterXml