XML mit XDocument klappt nicht (BMECat 2005)

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 2 Antworten in diesem Thema. Der letzte Beitrag () ist von Bibi.

    XML mit XDocument klappt nicht (BMECat 2005)

    Hallo in die Runde,

    ich stehe gerade vor dem Problem eine bestimmte XML Datei auszulesen.
    Grundsätzlich kein Thema, wurde schon oft gemacht aber in diesem Falle funktioniert es nicht und ich finde den Fehler nicht.

    Einlesen möchte ich XML mit dem Format BMECAT 2005. Die Datei habe findet ihr auch im Anhang.
    Sie sieht wie folgt aus...

    XML-Quellcode

    1. <?xml version="1.0" encoding="utf-8"?>
    2. <ORDER xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" version="2.1" type="standard" xmlns="http://www.opentrans.org/XMLSchema/2.1">
    3. <ORDER_HEADER>
    4. <CONTROL_INFO>
    5. <GENERATION_DATE>2022-03-28T11:31:27</GENERATION_DATE>
    6. </CONTROL_INFO>
    7. <ORDER_INFO>
    8. <ORDER_ID>61730204</ORDER_ID>
    9. <ORDER_DATE>2022-03-28T11:31:19</ORDER_DATE>
    10. <LANGUAGE xmlns="http://www.bmecat.org/bmecat/2005">ger</LANGUAGE>
    11. <PARTIES>
    12. <PARTY>
    13. <PARTY_ID type="buyer_specific" xmlns="http://www.bmecat.org/bmecat/2005">406802</PARTY_ID>
    14. <PARTY_ID type="gln" xmlns="http://www.bmecat.org/bmecat/2005">7640151820008</PARTY_ID>
    15. <PARTY_ROLE>buyer</PARTY_ROLE>
    16. <ADDRESS>
    17. <NAME xmlns="http://www.bmecat.org/bmecat/2005">Digitec Galaxus AG</NAME>
    18. <DEPARTMENT xmlns="http://www.bmecat.org/bmecat/2005">Accounting</DEPARTMENT>
    19. <STREET xmlns="http://www.bmecat.org/bmecat/2005">Pfingstweidstrasse 60b</STREET>
    20. <ZIP xmlns="http://www.bmecat.org/bmecat/2005">8005</ZIP>
    21. <CITY xmlns="http://www.bmecat.org/bmecat/2005">Zürich</CITY>
    22. <COUNTRY xmlns="http://www.bmecat.org/bmecat/2005">Schweiz</COUNTRY>
    23. <COUNTRY_CODED xmlns="http://www.bmecat.org/bmecat/2005">CH</COUNTRY_CODED>
    24. <EMAIL xmlns="http://www.bmecat.org/bmecat/2005">spmpartnerresponses@digitecgalaxus.ch</EMAIL>
    25. <VAT_ID xmlns="http://www.bmecat.org/bmecat/2005">CHE-109.049.266</VAT_ID>
    26. </ADDRESS>
    27. </PARTY>
    28. <PARTY>
    29. <PARTY_ID type="buyer_specific" xmlns="http://www.bmecat.org/bmecat/2005">407514</PARTY_ID>
    30. <PARTY_ROLE>supplier</PARTY_ROLE>
    31. <ADDRESS>
    32. <NAME xmlns="http://www.bmecat.org/bmecat/2005">Testfirma AG</NAME>
    33. <STREET xmlns="http://www.bmecat.org/bmecat/2005">Teststrasse 7</STREET>
    34. <ZIP xmlns="http://www.bmecat.org/bmecat/2005">6032</ZIP>
    35. <CITY xmlns="http://www.bmecat.org/bmecat/2005">Emmen</CITY>
    36. <COUNTRY xmlns="http://www.bmecat.org/bmecat/2005">Schweiz</COUNTRY>
    37. <COUNTRY_CODED xmlns="http://www.bmecat.org/bmecat/2005">CH</COUNTRY_CODED>
    38. <EMAIL xmlns="http://www.bmecat.org/bmecat/2005">spmpartnerresponses@digitecgalaxus.ch</EMAIL>
    39. </ADDRESS>
    40. </PARTY>
    41. <PARTY>
    42. <PARTY_ID type="buyer_specific" xmlns="http://www.bmecat.org/bmecat/2005">2210700</PARTY_ID>
    43. <PARTY_ROLE>delivery</PARTY_ROLE>
    44. <ADDRESS>
    45. <CONTACT_DETAILS>
    46. <TITLE xmlns="http://www.bmecat.org/bmecat/2005">Herr</TITLE>
    47. <FIRST_NAME xmlns="http://www.bmecat.org/bmecat/2005">Ver 2.0 Richard &amp; Annelie’s</FIRST_NAME>
    48. <CONTACT_NAME xmlns="http://www.bmecat.org/bmecat/2005">Kaufmann+Meiermann Co.</CONTACT_NAME>
    49. </CONTACT_DETAILS>
    50. <STREET xmlns="http://www.bmecat.org/bmecat/2005">Bei der Kaufmannstrasse 3</STREET>
    51. <ZIP xmlns="http://www.bmecat.org/bmecat/2005">9999</ZIP>
    52. <BOXNO xmlns="http://www.bmecat.org/bmecat/2005">75</BOXNO>
    53. <CITY xmlns="http://www.bmecat.org/bmecat/2005">Spreitenach</CITY>
    54. <COUNTRY xmlns="http://www.bmecat.org/bmecat/2005">Schweiz</COUNTRY>
    55. <COUNTRY_CODED xmlns="http://www.bmecat.org/bmecat/2005">CH</COUNTRY_CODED>
    56. <PHONE xmlns="http://www.bmecat.org/bmecat/2005">0444444444</PHONE>
    57. <EMAIL xmlns="http://www.bmecat.org/bmecat/2005">spmpartnerresponses@digitecgalaxus.ch</EMAIL>
    58. </ADDRESS>
    59. </PARTY>
    60. <PARTY>
    61. <PARTY_ID type="buyer_specific" xmlns="http://www.bmecat.org/bmecat/2005">10709476</PARTY_ID>
    62. <PARTY_ROLE>marketplace</PARTY_ROLE>
    63. <ADDRESS>
    64. <NAME xmlns="http://www.bmecat.org/bmecat/2005">Digitec Galaxus AG</NAME>
    65. <STREET xmlns="http://www.bmecat.org/bmecat/2005">Pfingstweidstrasse 60b</STREET>
    66. <ZIP xmlns="http://www.bmecat.org/bmecat/2005">8005</ZIP>
    67. <CITY xmlns="http://www.bmecat.org/bmecat/2005">Zürich</CITY>
    68. <COUNTRY xmlns="http://www.bmecat.org/bmecat/2005">Schweiz</COUNTRY>
    69. <COUNTRY_CODED xmlns="http://www.bmecat.org/bmecat/2005">CH</COUNTRY_CODED>
    70. <EMAIL xmlns="http://www.bmecat.org/bmecat/2005">spmpartnerresponses@digitecgalaxus.ch</EMAIL>
    71. </ADDRESS>
    72. </PARTY>
    73. </PARTIES>
    74. <CUSTOMER_ORDER_REFERENCE>
    75. <ORDER_ID>61730203</ORDER_ID>
    76. </CUSTOMER_ORDER_REFERENCE>
    77. <ORDER_PARTIES_REFERENCE>
    78. <BUYER_IDREF type="buyer_specific" xmlns="http://www.bmecat.org/bmecat/2005">406802</BUYER_IDREF>
    79. <SUPPLIER_IDREF type="buyer_specific" xmlns="http://www.bmecat.org/bmecat/2005">407514</SUPPLIER_IDREF>
    80. </ORDER_PARTIES_REFERENCE>
    81. <CURRENCY xmlns="http://www.bmecat.org/bmecat/2005">CHF</CURRENCY>
    82. <HEADER_UDX>
    83. <UDX.DG.CUSTOMER_TYPE>private_customer</UDX.DG.CUSTOMER_TYPE>
    84. <UDX.DG.DELIVERY_TYPE>direct_delivery</UDX.DG.DELIVERY_TYPE>
    85. <UDX.DG.IS_COLLECTIVE_ORDER>false</UDX.DG.IS_COLLECTIVE_ORDER>
    86. <UDX.DG.PHYSICAL_DELIVERY_NOTE_REQUIRED>false</UDX.DG.PHYSICAL_DELIVERY_NOTE_REQUIRED>
    87. </HEADER_UDX>
    88. </ORDER_INFO>
    89. </ORDER_HEADER>
    90. <ORDER_ITEM_LIST>
    91. <ORDER_ITEM>
    92. <LINE_ITEM_ID>1</LINE_ITEM_ID>
    93. <PRODUCT_ID>
    94. <SUPPLIER_PID type="supplierProductKey" xmlns="http://www.bmecat.org/bmecat/2005">4135378</SUPPLIER_PID>
    95. <INTERNATIONAL_PID type="gtin" xmlns="http://www.bmecat.org/bmecat/2005">00889842737240</INTERNATIONAL_PID>
    96. <BUYER_PID type="DgProductId" xmlns="http://www.bmecat.org/bmecat/2005">15395678</BUYER_PID>
    97. <DESCRIPTION_SHORT xmlns="http://www.bmecat.org/bmecat/2005">Microsoft Surface Laptop 4 (13.50 ", Intel Core i7-1185G7, 16 GB, 512 GB)</DESCRIPTION_SHORT>
    98. </PRODUCT_ID>
    99. <QUANTITY>1</QUANTITY>
    100. <ORDER_UNIT xmlns="http://www.bmecat.org/bmecat/2005">C62</ORDER_UNIT>
    101. <PRODUCT_PRICE_FIX>
    102. <PRICE_AMOUNT xmlns="http://www.bmecat.org/bmecat/2005">1390.33</PRICE_AMOUNT>
    103. <TAX_DETAILS_FIX>
    104. <TAX_AMOUNT>107.06</TAX_AMOUNT>
    105. </TAX_DETAILS_FIX>
    106. </PRODUCT_PRICE_FIX>
    107. <PRICE_LINE_AMOUNT>1390.33</PRICE_LINE_AMOUNT>
    108. <DELIVERY_DATE type="optional">
    109. <DELIVERY_START_DATE>2022-07-20T00:00:00</DELIVERY_START_DATE>
    110. <DELIVERY_END_DATE>2022-07-20T00:00:00</DELIVERY_END_DATE>
    111. </DELIVERY_DATE>
    112. </ORDER_ITEM>
    113. </ORDER_ITEM_LIST>
    114. <ORDER_SUMMARY>
    115. <TOTAL_ITEM_NUM>1</TOTAL_ITEM_NUM>
    116. <TOTAL_AMOUNT>1390.33</TOTAL_AMOUNT>
    117. </ORDER_SUMMARY>
    118. </ORDER>


    Bisher habe ich XML Dateien wie folgt mit XDocument ausgelesen.

    VB.NET-Quellcode

    1. Dim X1 As XDocument = XDocument.Load(sFile)
    2. Dim query = From daten In X1.Elements("ORDER").Elements("ORDER_HEADER").Elements("ORDER_INFO") Select daten
    3. For Each node In query
    4. 'Die Bestellung durchgehen
    5. Dim sOrder_ID As String = node.<ORDER_ID>.Value
    6. Next


    Doch ich erhalte kein Ergebnis. X1 enthält zwar wie gewünscht den Inhalt der XML Datei. Jedoch bekomme ich über den Query keine Ergebnisse, kann die einzelnen Inhalte der Nodes nicht ermitteln.
    Hat jemand eine Idee woran das liegen könnte oder wie ich es besser ausgelesen bekomme?

    Danke sehr :)
    Dateien
    Dein Namespace funkt dazwischen. Die Dinger heißen nicht "ORDER", "ORDER_HEADER", …, sondern sind nur über den vollständeigen Namen erreichbar:

    VB.NET-Quellcode

    1. Dim X1 As XDocument = XDocument.Load("order_firmenbestellung.xml")
    2. Dim query = From daten In X1.Elements("{http://www.opentrans.org/XMLSchema/2.1}ORDER").Elements("{http://www.opentrans.org/XMLSchema/2.1}ORDER_HEADER").Elements("{http://www.opentrans.org/XMLSchema/2.1}ORDER_INFO") Select daten
    3. For Each node In query
    4. 'Die Bestellung durchgehen
    5. Dim sOrder_ID As String = node.Element("{http://www.opentrans.org/XMLSchema/2.1}ORDER_ID").Value
    6. Next

    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „VaporiZed“ ()