VB.NET - XML richtig einlesen/iterieren

08/06/2020 20:37 stippy#1
Hallo, ich suche jemanden, der mir einen Code in VB.NET anpassen kann, damit eine XML richtig eingelesen wird.

Die XML-Datei:

PHP Code:
<result>
        <
success>1</success>
        <
orders>
            <
paging>
                <
total>1234</total>
                <
page>1</page>
                <
pages>139</pages>
                <
per_page>20</per_page>
            </
paging>
            <
order>
                <
order_no>000-000-000</order_no>
                <
total>50.99</total>
                <
shipping>0.00</shipping>
                <
max_shipping_date>2020-08-07</max_shipping_date>
                <
payment>PAL</payment>
                <
status>editable</status>
                <
invoice_no>999999-88888</invoice_no>
                <
comment_client/>
                <
comment_merchant/>
                <
created>2020-08-05 09:48:27</created>
                <
InLogistics>0</InLogistics>
                <
client>
                    <
client_id>41019710</client_id>
                    <
gender>Herr</gender>
                    <
first_name>max</first_name>
                    <
last_name>mustertyp</last_name>
                    <
company/>
                    <
street>Muster Straße</street>
                    <
street_no>8</street_no>
                    <
address_add/>
                    <
zip_code>00000</zip_code>
                    <
city>Teststadt</city>
                    <
country>DE</country>
                    <
email>test@email.de</email>
                    <
phone>123-123-123</phone>
                </
client>
                <
delivery_address>
                    <
gender>Herr</gender>
                    <
first_name>max</first_name>
                    <
last_name>mustertyp</last_name>
                    <
company/>
                    <
street>Muster Straße</street>
                    <
street_no>8</street_no>
                    <
address_add/>
                    <
zip_code>00000</zip_code>
                    <
city>Teststadt</city>
                    <
country>DE</country>
                </
delivery_address>
                <
items>
                    <
item>
                        <
item_id>83969739</item_id>
                        <
product_id>3133287034</product_id>
                        <
variant_id>0</variant_id>
                        <
product_art_no/>
                        <
name>
                            
Bestellung 1 Artikel 1
                        
</name>
                        <
name_add/>
                        <
qty>2</qty>
                        <
price>1.59</price>
                        <
price_sum>3.18</price_sum>
                        <
tax>1</tax>
                        <
country/>
                        <
city/>
                        <
address/>
                        <
zip_code/>
                    </
item>
                    <
item>
                        <
item_id>83969744</item_id>
                        <
product_id>3133286649</product_id>
                        <
variant_id>0</variant_id>
                        <
product_art_no/>
                        <
name>
                            
Bestellung 1 Artikel 2
                        
</name>
                        <
name_add/>
                        <
qty>2</qty>
                        <
price>1.69</price>
                        <
price_sum>3.38</price_sum>
                        <
tax>1</tax>
                        <
country/>
                        <
city/>
                        <
address/>
                        <
zip_code/>
                    </
item>
                </
items>
                <
coupon/>
            </
order>
            <
order>
                <
order_no>111-222-333</order_no>
                <
total>99.99</total>
                <
shipping>0.00</shipping>
                <
max_shipping_date>2020-08-07</max_shipping_date>
                <
payment>PAL</payment>
                <
status>editable</status>
                <
invoice_no>999999-88888</invoice_no>
                <
comment_client/>
                <
comment_merchant/>
                <
created>2020-08-05 09:48:27</created>
                <
InLogistics>0</InLogistics>
                <
client>
                    <
client_id>41019710</client_id>
                    <
gender>Frau</gender>
                    <
first_name>maxi</first_name>
                    <
last_name>musterfrau</last_name>
                    <
company/>
                    <
street>Muster Straße</street>
                    <
street_no>8</street_no>
                    <
address_add/>
                    <
zip_code>00000</zip_code>
                    <
city>Teststadt</city>
                    <
country>DE</country>
                    <
email>test@email.de</email>
                    <
phone>123-123-123</phone>
                </
client>
                <
delivery_address>
                    <
gender>Herr</gender>
                    <
first_name>max</first_name>
                    <
last_name>mustertyp</last_name>
                    <
company/>
                    <
street>Muster Straße</street>
                    <
street_no>8</street_no>
                    <
address_add/>
                    <
zip_code>00000</zip_code>
                    <
city>Teststadt</city>
                    <
country>DE</country>
                </
delivery_address>
                <
items>
                    <
item>
                        <
item_id>83969739</item_id>
                        <
product_id>3133287034</product_id>
                        <
variant_id>0</variant_id>
                        <
product_art_no/>
                        <
name>
                            
Bestellung 2 Artikel 1
                        
</name>
                        <
name_add/>
                        <
qty>2</qty>
                        <
price>1.59</price>
                        <
price_sum>3.18</price_sum>
                        <
tax>1</tax>
                        <
country/>
                        <
city/>
                        <
address/>
                        <
zip_code/>
                    </
item>
                    <
item>
                        <
item_id>83969744</item_id>
                        <
product_id>3133286649</product_id>
                        <
variant_id>0</variant_id>
                        <
product_art_no/>
                        <
name>
                            
Bestellung 2 Artikel 2
                        
</name>
                        <
name_add/>
                        <
qty>2</qty>
                        <
price>1.69</price>
                        <
price_sum>3.38</price_sum>
                        <
tax>1</tax>
                        <
country/>
                        <
city/>
                        <
address/>
                        <
zip_code/>
                    </
item>
                </
items>
                <
coupon/>
            </
order>
        </
orders>
    </
result
Der VB.NET Code:
Code:
                Try
                    xmlDoc.Load("test.xml")
     
                    For Each xmlNode As Xml.XmlElement In xmlDoc.SelectNodes("result/orders/order")
                       
                        Dim status As String = xmlNode.SelectSingleNode("status").InnerText
                        Dim items As ListViewItem = ListView1.Items.Add(xmlNode.SelectSingleNode("items/item/name").InnerText)
                        Dim eMail As String = xmlNode.SelectSingleNode("client/email").InnerText
                        Dim quantity As String = xmlNode.SelectSingleNode("items/item/qty").InnerText
                        Dim firstName As String = xmlNode.SelectSingleNode("client/first_name").InnerText
                        Dim lastName As String = xmlNode.SelectSingleNode("client/last_name").InnerText
                        Dim productName As String = xmlNode.SelectSingleNode("items/item/name").InnerText
                        Dim total As String = xmlNode.SelectSingleNode("total").InnerText
                        Dim created As String = xmlNode.SelectSingleNode("created").InnerText
                        Dim order_no As String = xmlNode.SelectSingleNode("order_no").InnerText
     
                        items.SubItems.Add(quantity)
                        items.SubItems.Add(total)
                        items.SubItems.Add(firstName + " " + lastName)
                        items.SubItems.Add(eMail)
                        items.SubItems.Add(created)
                        items.SubItems.Add(status)
                        items.SubItems.Add(order_no)
     
                        ' editable | shipped | canceled
                        If Status = "editable" Then
                            completeOrder(Order_no, eMail, productName, quantity)
                        End If
                    Next          
                Catch ex As Exception
                    ListBox1.Items.Add(ex.Message)
                End Try
Der Code funktioniert soweit, nur werden von den <items> jeweils nur die erste angezeigt bzw. in einer Listview eingetragen - es sind aber jeweils 2 oder mehr <item> in <items> vorhanden - man müsste also noch die <items> korrekt durchlaufen und anzeigen.

Ich würde denjenigen natürlich bezahlen, für seine mühen. Paypal, überweisung etc.

Mfg.
08/10/2020 14:32 Furkan#2
Mit dem Code sollte das funktionieren :)

Code:
Dim status As String = xmlNode.SelectSingleNode("status").InnerText
Dim eMail As String = xmlNode.SelectSingleNode("client/email").InnerText
Dim firstName As String = xmlNode.SelectSingleNode("client/first_name").InnerText
Dim lastName As String = xmlNode.SelectSingleNode("client/last_name").InnerText
Dim total As String = xmlNode.SelectSingleNode("total").InnerText
Dim created As String = xmlNode.SelectSingleNode("created").InnerText
Dim order_no As String = xmlNode.SelectSingleNode("order_no").InnerText

For Each itemNode As XmlNode In xmlNode.SelectNodes("items/item")

	Dim item As ListViewItem = ListView1.Items.Add(itemNode.SelectSingleNode("name").InnerText.Trim())
	item.SubItems.Add(itemNode.SelectSingleNode("qty").InnerText)
	item.SubItems.Add(total)
	item.SubItems.Add(firstName + " " + lastName)
	item.SubItems.Add(eMail)
	item.SubItems.Add(created)
	item.SubItems.Add(status)
	item.SubItems.Add(order_no)
Next

' editable | shipped | canceled