Чтение XML в VB.net
я гуглил в течение последнего часа или около того без везения (я хотел бы думать, что я тоже большой Гуглер!), и вот я здесь.
у меня есть XML-файл, который я использую для своих настроек программ, он выглядит так:
<?xml version="1.0" encoding="utf-8"?>
<config>
<store>
<number>0323</number>
<address>address</address>
<phone>phone</phone>
</store>
<emailsettings>
<emailfrom>emailfrom</emailfrom>
<emailpass>pass</emailpass>
<emailsubject>received</emailsubject>
<smtpserver>smtp.gmail.com</smtpserver>
<smtpport>587</smtpport>
<enablessl>true</enablessl>
<emailbody>package received</emailbody>
</emailsettings>
<dbconfig>
<dbpath>path</dbpath>
</dbconfig>
</config>
как я могу использовать vb.net чтобы получить каждый элемент и вернуть определенное значение, которое я хочу? Per se, я хотел бы вернуться <number>
(при <store>
) в textbox1, и <emailbody>
(при <emailsettings>
) в textbox2.
помогите pleaseeeeee! Спасибо :)
4 ответов
Ах, идеальный пример для демонстрации мощных функций XML VB.NET с рамками 3.5:
Sub Main()
Dim xml = XDocument.Load("config.xml")
Console.WriteLine("Number: " & xml.<config>.<store>.<number>.Value)
Console.WriteLine("Body: " & xml.<config>.<emailsettings>.<emailbody>.Value)
End Sub
выходы:
Number: 0323
Body: package received
вот консольное приложение, использующее VB.Net поддержка XML-литералов.
Module Module1
Sub Main()
Dim xElem = <config>
<store>
<number>0323</number>
<address>address</address>
<phone>phone</phone>
</store>
<emailsettings>
<emailfrom>emailfrom</emailfrom>
<emailpass>pass</emailpass>
<emailsubject>received</emailsubject>
<smtpserver>smtp.gmail.com</smtpserver>
<smtpport>587</smtpport>
<enablessl>true</enablessl>
<emailbody>package received</emailbody>
</emailsettings>
<dbconfig>
<dbpath>path</dbpath>
</dbconfig>
</config>
Dim number = xElem.<store>.<number>.Value
Dim emailbody = xElem.<emailsettings>.<emailbody>.Value
Console.WriteLine(String.Format("Number={0}", number))
Console.WriteLine(String.Format("emailbody={0}", emailbody))
Console.ReadLine()
'--- What it'd look like if you loaded from a file using XDocument.Load
Dim xDoc = XDocument.Load(New IO.StringReader(xElem.ToString))
number = xDoc.Root.<store>.<number>.Value
emailbody = xDoc.Root.<emailsettings>.<emailbody>.Value
Console.WriteLine(String.Format("Number={0}", number))
Console.WriteLine(String.Format("emailbody={0}", emailbody))
Console.ReadLine()
End Sub
End Module
результаты будут:
Number=0323 emailbody=package received Number=0323 emailbody=package received
можно использовать сериализацию XML. Создайте классы, представляющие структуру XML, и используйте класс сериализации XML для десериализации данных. После этого вы можете использовать данные в своем приложении.
Ниже приведена ссылка на пример из MSDN:
Если вы знакомы с наборами данных и datatables, это простой способ сделать это:
Dim DS As New DataSet
DS.ReadXml("Data.xml")
наборы данных могут читать любой XML. Я даже использую это для вызова XML-служб с поддержкой rest.