我正在尝试使用C#和.NET(版本2.0 ..是,版本2.0)创建XmlDocument
。我使用:
document.DocumentElement.SetAttribute(
"xmlns:soapenv", "http://schemas.xmlsoap.org/soap/envelope");
当我使用:
创建新的XmlElement
时
document.createElement("soapenv:Header");
...它在最终的XML中不包含soapenv
命名空间。任何想法为什么会这样?
更多信息:
好的,我会尝试澄清一下这个问题。我的代码是:
XmlDocument document = new XmlDocument();
XmlElement element = document.CreateElement("foo:bar");
document.AppendChild(element); Console.WriteLine(document.OuterXml);
输出:
<bar />
然而,我想要的是:
<foo:bar />
答案 0 :(得分:2)
您可以使用XmlDocument.CreateElement Method (String, String, String)
为bar
元素指定命名空间
示例:强>
using System;
using System.Xml;
XmlDocument document = new XmlDocument();
// "foo" => namespace prefix
// "bar" => element local name
// "http://tempuri.org/foo" => namespace URI
XmlElement element = document.CreateElement(
"foo", "bar", "http://tempuri.org/foo");
document.AppendChild(element);
Console.WriteLine(document.OuterXml);
预期输出:
<foo:bar xmlns:foo="http://tempuri.org/foo" />
答案 1 :(得分:-1)
也许您可以分享您期望的最终XML文档。
但是根据我的理解,您希望这样做:
<?xml version="1.0"?>
<soapMessage xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope">
<Header xmlns="http://schemas.xmlsoap.org/soap/envelope" />
</soapMessage>
所以这样做的代码是:
XmlDocument document = new XmlDocument();
document.LoadXml("<?xml version='1.0' ?><soapMessage></soapMessage>");
string soapNamespace = "http://schemas.xmlsoap.org/soap/envelope/";
XmlAttribute nsAttribute = document.CreateAttribute("xmlns","soapenv","http://www.w3.org/2000/xmlns/");
nsAttribute.Value = soapNamespace;
document.DocumentElement.Attributes.Append(namespaceAttribute);
document.DocumentElement.AppendChild(document.CreateElement("Header",soapNamespace));