2017-02-18 2 views
-1

ребята, как я могу зацикливать информацию xml с помощью vb.net для вставки в базу данных?Как Vb.net XML Loop

я попробовать несколько кодеков, но цикл не работает

<?xml version="1.0" encoding="UTF-8"?> 
<ComputerInformations> 
    <ComputerInformation> 
    <CompName>TESTUSER</CompName> 
    <CompModel>OptiPlex 990</CompModel> 
    <CompDomain>dnsx.local</CompDomain> 
    <CompSystemType>x64-based PC</CompSystemType> 
</ComputerInformation> 
<ComputerMemoryInformations> 
    <ComputerMemoryInformation> 
     <CompMemBank>BANK 1</CompMemBank> 
     <CompMemCapacity>2GB</CompMemCapacity> 
     <CompMemManufacturer>Hynix/Hyundai</CompMemManufacturer> 
     <CompMemPartNumber>HMT125U7BFR8C-G7</CompMemPartNumber> 
     <CompMemSerialNumber>1B73E64A</CompMemSerialNumber> 
     <CompMemSpeed>1067</CompMemSpeed> 
     <CompMemBank>BANK 2</CompMemBank> 
     <CompMemCapacity>2GB</CompMemCapacity> 
     <CompMemManufacturer>Hynix/Hyundai</CompMemManufacturer> 
     <CompMemPartNumber>HMT125U7BFR8C-G7</CompMemPartNumber> 
     <CompMemSerialNumber>1BB3E65E</CompMemSerialNumber> 
     <CompMemSpeed>1067</CompMemSpeed> 
    </ComputerMemoryInformation> 
    </ComputerMemoryInformations> 
</ComputerInformations> 

это мой vb.net Codec я использую vb.net 2015:

Function ParseXmltoDatabase(ByVal XmlData As String) 
     Dim sr As New System.IO.StringReader(XmlData) 
     Dim reader = System.Xml.XmlReader.Create(sr) 
     reader.MoveToContent() 
     Dim inputXml = XDocument.ReadFrom(reader) 
     Dim XmlDoc = XDocument.Parse(inputXml.ToString) 
     Dim Xdoc As XmlDocument = New XmlDocument() 
     Xdoc.LoadXml(XmlDoc.ToString) 
     For Each node As XmlNode In Xdoc.SelectNodes("/ComputerInformations/ComputerMemoryInformations/ComputerMemoryInformation") 
     Dim ComputerMemoryInformation As XmlElement = TryCast(node, XmlElement) 
     Dim CompMemBank As XmlElement = DirectCast(ComputerMemoryInformation.SelectSingleNode("CompMemBank"), XmlElement) 
     If CompMemBank IsNot Nothing Then 
      Console.WriteLine("CompMemBank: {0}", CompMemBank.InnerText) 
     End If 
     Console.WriteLine() 
    Next 

проблема только я получаю первый результат CompMemBank the Each не работает

+0

Вы, как правило, неправильно разбираетесь в том, что мы не можем догадываться, что это должно быть. Исправьте это и спросите еще раз. – MrGadget

+0

Спасибо, правильный XML добавлен в вопрос – Chacaman

ответ

1

Путь слишком много кода ... все, что вам нужно, это итерация по этим узлам:

Sub ParseXmltoDatabase(ByVal XmlData As String) 
    With New XmlDocument() 
     .LoadXml(XmlData) 
     For Each node As XmlNode In .SelectNodes("/ComputerInformations/ComputerMemoryInformations/ComputerMemoryInformation/*") 
      Debug.Print(node.Name & vbTab & node.InnerText) 
     Next 
    End With 
End Sub 

Часть вашей проблемы была в XPath отсутствует /* в конце.