Добавление атрибутов в XML node
Как создать динамический файл xml со следующей структурой?
<Login>
<id userName="Tushar" passWord="Tushar">
<Name>Tushar</Name>
<Age>24</Age>
</id>
</Login>
Я не могу создать атрибуты внутри тега id
(то есть userName = "и passWord =" ").
Я использую С# в приложении Windows.
Некоторое важное пространство имен, которое может потребоваться,
using System.Xml;
using System.IO;
Ответы
Ответ 1
Ну id
на самом деле не корень node: Login
is.
Это должен быть случай указания атрибутов (not tags, btw) с помощью XmlElement.SetAttribute
. Вы еще не указали, как вы создаете файл: используете ли вы XmlWriter, DOM или любой другой XML-API.
Если бы вы могли привести пример кода, который у вас есть, который не работает, это очень поможет. Тем временем здесь приведен код, который создает файл, который вы описали:
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");
}
}
Ответ 2
Последний и, возможно, самый лучший способ построения XML - это использовать 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");
Предположительно, этот способ кодирования должен быть проще, так как код очень похож на результат (чего нет в примере выше). Тем не менее, я обнаружил, что, кодируя этот относительно простой пример, я был склонен потерять свой путь между запятой запятой, с которой вам приходится перемещаться. Автоматическое разметка кода в Visual Studio также не помогает.
Ответ 3
Существует также способ добавить атрибут к объекту XmlNode
, который может быть полезен в некоторых случаях.
Я нашел этот другой метод на msdn.microsoft.com.
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);
[...]
Ответ 4
Вы можете использовать класс XmlAttribute.
Например:
XmlAttribute attr = xmlDoc.CreateAttribute("userName");
attr.Value = "Tushar";
node.Attributes.Append(attr);