我在xml操作方面有点新。我想创建一个XmlNode。
我已经尝试使用OwnerDocument.CreateElement方法,还尝试了OwnerDocument.CreateNode方法,但是我无法创建以下XmlNode:
<Data ss:Type="String"/>
您能帮我解决这个问题吗?我已经尝试了所有发现的东西,但没有尝试。
答案 0 :(得分:0)
XmlDocument
已被更新的XDocument
API替换为.NET框架,该API与Linq配合较好,并且通常是用于XML操作的现代库。
这里是一个示例,您如何使用该API将元素插入到现有XML文档中,该元素的属性具有先前声明的名称空间前缀。
XDocument ownerDocument = XDocument.Parse("<OwnerDocument></OwnerDocument>");
XNamespace ssNameSpace = "http://whatever/somenamespace";
// add namespace declaration to the root, set ss as the namespace prefix
// you only need to do this if the document doesn't already have the namespace declaration
ownerDocument.Root.Add(new XAttribute(XNamespace.Xmlns + "ss", ssNameSpace.NamespaceName));
// add our new data element to the root, and add the type attribute prefixed with the ss namespace
ownerDocument.Root.Add(new XElement("Data", new XAttribute(ssNameSpace + "Type", "String")));
这将产生以下XML:
<OwnerDocument xmlns:ss="http://whatever/somenamespace">
<Data ss:Type="String" />
</OwnerDocument>
如果您确实喜欢使用XmlDocument
,则可以按照以下步骤进行操作:
XmlDocument ownerDocument = new XmlDocument();
ownerDocument.LoadXml("<OwnerDocument></OwnerDocument>");
// add namespace declaration to the root, set ss as the namespace prefix
var nsDeclarationAttribute = ownerDocument.CreateAttribute("xmlns:ss");
nsDeclarationAttribute.Value = "http://whatever/somenamespace";
ownerDocument.DocumentElement.Attributes.Append(nsDeclarationAttribute);
// add data element, and add a type attribute to that
var dataElement = ownerDocument.CreateElement("Data");
var typeAttribute = ownerDocument.CreateAttribute("Type", "http://whatever/somenamespace");
typeAttribute.Value = "String";
dataElement.Attributes.Append(typeAttribute);
// append to main document
ownerDocument.DocumentElement.AppendChild(dataElement);