• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

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

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

ssssmileeee

Имеется следующий хмл документ:
Код:
<?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]
 
L

LuMee

Вариант 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;
}
}
}
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!