2017-02-03 2 views
0

Ich schreibe in eine XML-Datei von vb.net. Eine Probe würde so ähnlich aussehen.Lesen von XML-Kindknotenproblem

<?xml version="1.0" encoding="utf-8"?> 
    <Settings> 
     <LaunchOnReboot>True</LaunchOnReboot> 
     <SavedMounts> 
     <Mount> 
      <Description>fake mount</Description> 
      <DriveLetter>B</DriveLetter> 
      <DriveLocation>\\Location\1</DriveLocation> 
      <UserName>User</UserName> 
      <Password>FakePassword2</Password> 
      <AutomagicallyMount>False</AutomagicallyMount> 
      <Linux>True</Linux> 
     </Mount> 
     <Mount> 
      <Description>fake mount 2</Description> 
      <DriveLetter>G</DriveLetter> 
      <DriveLocation>\\fake\fakelocation</DriveLocation> 
      <UserName>awiles</UserName> 
      <Password>FakePassword</Password> 
      <AutomagicallyMount>False</AutomagicallyMount> 
      <Linux>True</Linux> 
     </Mount> 
     </SavedMounts> 
    </Settings> 

Ich habe kein Problem zu schreiben, aber ich bin ein Problem mit dem SavedMounts childnodes zu lesen. Das ist es, was ich bisher herausgefunden habe, aber ich bin mir nicht sicher, wie ich spezifische Werte basierend auf bestimmten ElementStrings ziehen kann.

Dies ist, wie ich denke, dass der Code aussehen sollte, aber ein wenig Hilfe benötigen.

Irgendwelche Ideen?

+0

gut Sie nur zeigen Zeichenfolgen in der messagebox.show sind. Möchten Sie den Wert aus XML anzeigen, müssen Sie ihn zuerst lesen. –

Antwort

1

Mit xml linq:

Imports System.Xml 
Imports System.Xml.Linq 
Module Module1 
    Const FILENAME As String = "c:\temp\test.xml" 
    Sub Main() 
     Dim doc As XDocument = XDocument.Load(FILENAME) 

     Dim results = doc.Descendants("Mount").Select(Function(x) New With { _ 
      .description = CType(x.Element("Description"), String), _ 
      .driveLetter = CType(x.Element("DriveLetter"), String), _ 
      .driveLocation = CType(x.Element("DriveLocation"), String), _ 
      .userName = CType(x.Element("UserName"), String), _ 
      .password = CType(x.Element("Password"), String), _ 
      .automagicallyMount = CType(x.Element("AutomagicallyMount"), String), _ 
      .linux = CType(x.Element("Linux"), Boolean) _ 
     }).ToList() 
    End Sub 

End Module