将属性添加到XML节点

如何使用以下结构dynamic创buildxml文件?

<Login> <id userName="Tushar" passWord="Tushar"> <Name>Tushar</Name> <Age>24</Age> </id> </Login> 

我无法在id标签(即userName =“”和passWord =“”)内创build属性。

我在Windows应用程序中使用C#。

您可能需要的一些重要的命名空间是

 using System.Xml; using System.IO; 

那么好的id不是真正的根节点: Login是。

它应该只是一个使用XmlElement.SetAttribute指定属性(不是标签,btw)的情况。 您尚未指定如何创build文件 – 无论您是使用XmlWriter,DOM还是其他任何XML API。

如果你可以举一个你没有工作的代码的例子,那将会有很大的帮助。 同时,下面是一些代码,用于创build您描述的文件:

 using System; using System.Xml; class Test { static void Main() { XmlDocument doc = new XmlDocument(); XmlElement root = doc.CreateElement("Login"); XmlElement id = doc.CreateElement("id"); id.SetAttribute("userName", "Tushar"); id.SetAttribute("passWord", "Tushar"); XmlElement name = doc.CreateElement("Name"); name.InnerText = "Tushar"; XmlElement age = doc.CreateElement("Age"); age.InnerText = "24"; id.AppendChild(name); id.AppendChild(age); root.AppendChild(id); doc.AppendChild(root); doc.Save("test.xml"); } } 

构buildXML的最新和理想的方法是使用LINQ to XML:

 using System.Xml.Linq var xmlNode = new XElement("Login", new XElement("id", new XAttribute("userName", "Tushar"), new XAttribute("password", "Tushar"), new XElement("Name", "Tushar"), new XElement("Age", "24") ) ); xmlNode.Save("Tushar.xml"); 

据说这种编码方式应该更容易一些,因为代码与输出非常相似(Jon的例子并没有)。 但是,我发现在编写这个相对简单的例子的时候,我很容易迷失在你需要浏览的一系列逗号之间。 Visual Studio的自动间隔代码也没有帮助。

还有一种方法可以将属性添加到XmlNode对象,在某些情况下可能会有用。

我在msdn.microsoft.com上find了这个方法。

 using System.Xml; [...] //Assuming you have an XmlNode called node XmlNode node; [...] //Get the document object XmlDocument doc = node.OwnerDocument; //Create a new attribute XmlAttribute attr = doc.CreateAttribute("attributeName"); attr.Value = "valueOfTheAttribute"; //Add the attribute to the node node.Attributes.SetNamedItem(attr); [...]