Чтение childelement в XElement в VB.NET - PullRequest
0 голосов
/ 22 декабря 2011

Я пытался прочитать XML-файл, используя VB.NET, и после некоторого (см. 2-3 часа) поиска в Google и чтения я направился в несколько правильном направлении, однако сейчас я остановился и Я не могу найти ответы, которые имеют какой-либо смысл для меня.

Это XML у меня:

<?xml version="1.0" encoding="ISO-8859-1"?>
<exportCustomerInformation xmlns="http://www.testdom.se/server/services/exportCustomerInformationNavision" xmlns:met="http://www.testdom.se/server/services/metadata" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <data>
        <customers>
            <customerInformation xmlns:nav="http://www.testdom.se/server/services/integration/navision">
                <nav:littera/>
                <nav:parentUuid/>
                <nav:name>TESTBEDRIFTEN AS</nav:name>
                <nav:uuid>77cf992e-766a-4496-9a5a-5105a75214ce</nav:uuid>
                <nav:customerType>1</nav:customerType>
                <nav:emailAddress/>
                <nav:industryBranch/>
                <nav:department>TRONDHEIM</nav:department>
                <nav:invoicingAddress>
                    <nav:streetName>PO BOX 123</nav:streetName>
                    <nav:streetNumber/>
                    <nav:recipient/>
                    <nav:postalCode>7407</nav:postalCode>
                    <nav:city>TRONDHEIM</nav:city>
                    <nav:country>NORWAY</nav:country>
                </nav:invoicingAddress>
                <nav:deliveryAddress>
                    <nav:placeName>TESTBEDRIFTEN AS</nav:placeName>
                <nav:streetName>STORGATEN</nav:streetName>
                    <nav:streetNumber>1</nav:streetNumber>
                    <nav:recipient/>
                    <nav:postalCode>7011</nav:postalCode>
                    <nav:city>TRONDHEIM</nav:city>
                    <nav:country>NORWAY</nav:country>
                </nav:deliveryAddress>
            </customerInformation>
        </customers>
    </data>
</exportCustomerInformation>

Чтобы прочитать это, у меня есть следующий код:

Dim xmlDoc = XDocument.Load(file)
    For Each dataXML As XElement In xmlDoc...<customerInformation>

        oDR = oDT.NewRow
        oDR("parentUuid") = dataXML...<nav:parentUuid>.Value
        oDR("name") = dataXML...<nav:name>.Value
        oDR("uuid") = dataXML...<nav:uuid>.Value
        oDR("customerType") = dataXML...<nav:customerType>.Value
        oDR("emailAddress") = dataXML...<nav:emailAddress>.Value

        'What to here in order to get to these children?
        oDR("invStreetName") = dataXML.<nav:invoicingAddress>.<nav:invStreetName>.Value
        oDR("invStreetNumber") = dataXML.<nav:invoicingAddress>...<nav:invStreetNumber>.Value
        oDR("invName") = dataXML.<nav:invoicingAddress>...<nav:invName>.Value
        oDR("invPostalCode") = dataXML.<nav:invoicingAddress>...<nav:invPostalCode>.Value
        oDR("invCity") = dataXML.<nav:invoicingAddress>...<nav:invCity>.Value
        oDR("invCountry") = dataXML.<nav:invoicingAddress>...<nav:invCountry>.Value

    Next

Итак, на мой вопрос. Как я могу получить доступ к детям под узлом ??

код, который я предоставил выше, не принес ничего хорошего. : P

Любая помощь очень ценится.

// Jaggen

1 Ответ

0 голосов
/ 22 декабря 2011

Вот ужасный пример этого, предполагая, что doc содержит XDocument:

Dim customerInfo = doc.Root.Elements.First.Elements.First.Elements.First

Dim invoicingAddress = _
customerInfo.Elements.First(Function(x) x.Name.LocalName = "invoicingAddress")

Dim streetName = _
invoicingAddress.Elements.First(Function(x) x.Name.LocalName = "streetName").Value
...