Работа с Xml в Visual C#

  • Автор темы ssssmileeee
  • Дата начала
Статус
Закрыто для дальнейших ответов.
S

ssssmileeee

Гость
#1
Имеется следующий хмл документ:
Код:
<?xml version="1.0" encoding="utf-8"?>
<LanMonitor UserIP="192.168.1.1" UserName="User1" Update="01.01.2010">
<StartedProcesses>
<Process>
<Name>111.exe</Name> 
<LastStart>
<Date>01.01.2010</Date>
<Time>09:00</Time>
</LastStart>
</Process>
</StartedProcesses>
</LanMonitor>
Как мне получить текстовое значение атрибута UserName из строки
Код:
<LanMonitor UserIP="192.168.1.1" UserName="User1" Update="01.01.2010">
Пробовал писать код, но впервые работаю с XML, поэтому не очень понимаю, как получать атрибут конкретного элемента.
<!--shcode--><pre><code class='c#'> XmlDocument xmldoc = new XmlDocument(C:\1.xml");
xmldoc.Load();
XmlNodeReader xmlreader = new XmlNodeReader(xmldoc);
XmlNode rootnode = xmldoc.DocumentElement;
XmlNodeList childnodes = rootnode.ChildNodes;
xmlreader.Read();
ClientName.Text = childnodes[0].Attributes["UserName"].Value; //есть предположения, что как-то так, но не получается считать.[/CODE]
 

LuMee

Well-Known Member
02.05.2006
477
0
#2
Вариант 1, простой:
Код:
var xmlDoc = new XmlDocument();
xmlDoc.Load("C:\1.xml");

var node = xmlDoc.SelectSingleNode("/LanMonitor");
Console.WriteLine(node.Attributes["UserName"].Value);
Вариант 2, сложнее, но, по идее, шустрее работает, если XML-документ большой:
Код:
using (var reader = XmlReader.Create("C:\1.xml"))
{
while (reader.Read())
{
if (reader.NodeType == XmlNodeType.Element && reader.Name == "LanMonitor")
{
Console.WriteLine(reader.GetAttribute("UserName"));
break;
}
}
}
 
Статус
Закрыто для дальнейших ответов.