用VB.net读取XML

用VB.net读取XML,xml,vb.net,visual-studio-2010,Xml,Vb.net,Visual Studio 2010,我正在努力在VB中读取XML并获取所需的数据 <?xml version="1.0" encoding="UTF-8"?> <Install> <Package> <Name>Office2010</Name> <Path>C:\Windows\Office</Path> <Default>0</D

我正在努力在VB中读取XML并获取所需的数据

<?xml version="1.0" encoding="UTF-8"?> 
    <Install>
        <Package>
            <Name>Office2010</Name>
            <Path>C:\Windows\Office</Path>
            <Default>0</Default>
        </Package>
        <Package>
            <Name>CCleaner</Name>
            <Path>C:\Windows\Cleaner</Path>
            <Default>0</Default>
        </Package>
    </Install>
这可能吗?我已经为此挣扎了两个多小时了。
谢谢。

您可以对每个循环和XML文本使用一个简单的
,如:

// parse your XML into an XDocument
Dim doc As XDocument = XDocument.Parse(xml)
// get "Install" element
Dim install As XElement = doc.Root

// iterate over "Package" elements in install
For Each package As XElement In install.Elements("Package")
    Dim name As String = package.Element("Name").Value
    Dim path As String = package.Element("Path").Value
    Dim def As String = package.Element("Default").Value
Next
' or load the XML with XDocument.Load(...) '
Dim xml = <Install>
            <Package>
                <Name>Office2010</Name>
                <Path>C:\Windows\Office</Path>
                <Default>0</Default>
            </Package>
            <Package>
                <Name>CCleaner</Name>
                <Path>C:\Windows\Cleaner</Path>
                <Default>0</Default>
            </Package>
        </Install>

' If you used XDocument.Load(...), use xml.Root.<Package> instead '
For Each package In xml.<Package>
    Console.WriteLine(package.<Name>.Value)
    Console.WriteLine(package.<Path>.Value)
    Console.WriteLine(package.<Default>.Value)
Next
'或使用XDocument.load(…)加载XML'
Dim xml=
办公室2010
C:\Windows\Office
0
清洁剂
C:\Windows\Cleaner
0
'如果使用XDocument.Load(…),请使用xml.Root。而是
对于xml格式的每个包。
Console.WriteLine(包..值)
Console.WriteLine(包..值)
Console.WriteLine(包..值)
下一个

您可以对每个循环和XML文本使用一个简单的
,如:

' or load the XML with XDocument.Load(...) '
Dim xml = <Install>
            <Package>
                <Name>Office2010</Name>
                <Path>C:\Windows\Office</Path>
                <Default>0</Default>
            </Package>
            <Package>
                <Name>CCleaner</Name>
                <Path>C:\Windows\Cleaner</Path>
                <Default>0</Default>
            </Package>
        </Install>

' If you used XDocument.Load(...), use xml.Root.<Package> instead '
For Each package In xml.<Package>
    Console.WriteLine(package.<Name>.Value)
    Console.WriteLine(package.<Path>.Value)
    Console.WriteLine(package.<Default>.Value)
Next
'或使用XDocument.load(…)加载XML'
Dim xml=
办公室2010
C:\Windows\Office
0
清洁剂
C:\Windows\Cleaner
0
'如果使用XDocument.Load(…),请使用xml.Root。而是
对于xml格式的每个包。
Console.WriteLine(包..值)
Console.WriteLine(包..值)
Console.WriteLine(包..值)
下一个

Hi Saeb,我得到了:根级别的数据无效。第1行,位置1。“我太傻了?”Jente,发布你的完整XML。实际上,除了版本之外,这是完整的XML。我已经在我的帖子中添加了它。@Jente,声明没有错,所以它必须是XML文件如何生成/写入的问题。看看。嗯,试过了,但是运气不好。我甚至创建了一个新的XML(我在记事本中创建了它),同样的错误。第1行,位置1。“我太傻了?”Jente,发布你的完整XML。实际上,除了版本之外,这是完整的XML。我已经在我的帖子中添加了它。@Jente,声明没有错,所以它必须是XML文件如何生成/写入的问题。看看。嗯,试过了,但是运气不好。我甚至创建了一个新的XML(我在记事本中创建了它),同样的错误。我真的无法让它工作。您的示例按预期工作,但当我尝试读取XML文件时,出现了一个错误,或者它认为my.XML是空的。有人能给我一个XDocument.Load()的简短片段吗?我想我做错了。如果使用
XDocument.Load(yourpath)
加载XML,请使用
XML.Root。
而不是
XML。
我真的无法实现这一点。您的示例按预期工作,但当我尝试读取XML文件时,出现了一个错误,或者它认为my.XML是空的。有人能给我一个XDocument.Load()的简短片段吗?我认为我做得不对。如果使用
XDocument.Load(yourpath)
加载XML,请使用
XML.Root。
而不是
XML。