我在最后一个小时左右用谷歌搜索没有运气(我想我也是一个伟大的Google员工!),所以我在这里。
我有一个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获取每个元素并返回我想要的特定值?本身,我想在textbox1中返回<number>
(在<store>
下),在textbox2中返回<emailbody>
(在<emailsettings>
下)。
帮助pleaseeeeee!谢谢:))
答案 0 :(得分:20)
啊,这是用Framework 3.5展示VB.NET强大的XML特性的完美例子:
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
答案 1 :(得分:5)
这是一个使用VB.Net XML Literal支持的控制台应用程序。
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
答案 2 :(得分:1)
您可以使用XML序列化。创建表示XML结构的类,并使用XML序列化类对数据进行反序列化。完成后,您可以使用应用程序中的数据。
以下是MSDN示例的链接:
答案 3 :(得分:0)
如果您熟悉数据集和数据表,这是一种简单的方法:
Dim DS As New DataSet
DS.ReadXml("Data.xml")
DataSet可以读取任何XML。我甚至用它来调用支持rest的XML服务。