Подтвердить что ты не робот

Добавление атрибутов в 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;
4b9b3361

Ответ 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);