使用指定的电子表格类型创建XmlNode

时间:2019-07-19 15:11:32

标签: c# xml xpath namespaces xmlnode

我在xml操作方面有点新。我想创建一个XmlNode。

我已经尝试使用OwnerDocument.CreateElement方法,还尝试了OwnerDocument.CreateNode方法,但是我无法创建以下XmlNode:

<Data ss:Type="String"/>

您能帮我解决这个问题吗?我已经尝试了所有发现的东西,但没有尝试。

1 个答案:

答案 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);