2015-11-28 4 views
0

Я пытаюсь читать в XML-файле в нашем приложении VB6. Я прошел через много кода, пытаясь получить «модификаторы» для каждого «элемента» в списке, но может только получить их все одновременно. Кажется, проблема в том, что все они называются одинаковыми! Любая помощь будет принята с благодарностью! - KCXML visual basic 6

Вот XML:

 <?xml version="1.0" encoding="ISO-8859-1"?> 
    <GetNewOrdersResponse> 
     <ResultCode>0</ResultCode> 
     <Message>Ok</Message> 
     <LocationID>436</LocationID> 
     <StoreTimeGMT>2015-11-27 05:13:38</StoreTimeGMT> 
     <TotalRecords>1</TotalRecords> 
     <Tickets> 
      <ticket> 
     <order_id>5278</order_id> 
     <type>TAKEOUT</type> 
     <comments></comments> 
     <customer> 
      <customer_id></customer_id> 
      <phone_id></phone_id> 
      <firstname>Kyle</firstname> 
      <lastname>Cross</lastname> 
      <email>[email protected]</email> 
      <phone>4438786137</phone> 
     </customer> 
     <created_timestamp>2015-11-26 23:19:47</created_timestamp> 
     <requested_timestamp>2015-11-27 17:00:00</requested_timestamp> 
     <items> 
      <item id="21845" pos_id="5702"> 
       <name>Cheese Pizza</name> 
       <size>12"</size> 
       <quantity>1</quantity> 
       <price>8.95</price> 
       <comments></comments> 
       <modifiers> 
        <modifier id="44347" pos_id="3252"> 
         <name>Thick</name> 
         <price>0.00</price> 
         <quantity>1</quantity> 
        </modifier> 
        <modifier id="44349" pos_id="6000"> 
         <name>Cheddar Cheese</name> 
         <price>0.00</price> 
         <quantity>whole_extra</quantity> 
        </modifier> 
        <modifier id="44350" pos_id="6003"> 
         <name>Green Olives</name> 
         <price>0.50</price> 
         <quantity>left</quantity> 
        </modifier> 
        <modifier id="44351" pos_id="6005"> 
         <name>Black Olives</name> 
         <price>0.50</price> 
         <quantity>right</quantity> 
        </modifier> 
        <modifier id="44353" pos_id="6009"> 
         <name>Tomatoes</name> 
         <price>1.00</price> 
         <quantity>whole</quantity> 
        </modifier> 
        <modifier id="44355" pos_id="6013"> 
         <name>Pineapple</name> 
         <price>0.50</price> 
         <quantity>right</quantity> 
        </modifier> 
       </modifiers> 
      </item> 
      <item id="21782" pos_id="5001"> 
       <name>Big Burger</name> 
       <size></size> 
       <quantity>3</quantity> 
       <price>8.95</price> 
       <comments></comments> 
       <modifiers> 
        <modifier id="44287" pos_id="3044"> 
         <name>Well</name> 
         <price>0.00</price> 
         <quantity>1</quantity> 
        </modifier> 
        <modifier id="44306" pos_id="5100"> 
         <name>Cole Slaw</name> 
         <price>0.00</price> 
         <quantity>1</quantity> 
        </modifier> 
       </modifiers> 
      </item> 
      <item id="21805" pos_id="4700"> 
       <name>Fried Chicken Salad</name> 
       <size></size> 
       <quantity>1</quantity> 
       <price>10.95</price> 
       <comments></comments> 
       <modifiers> 
        <modifier id="44318" pos_id="3030"> 
         <name>Blue Cheese</name> 
         <price>0.00</price> 
         <quantity>1</quantity> 
        </modifier> 
       </modifiers> 
      </item> 
     </items> 
     <subtotal>49.25</subtotal> 
     <tax>3.45</tax> 
     <total>52.70</total> 
     <PaymentType>CASH</PaymentType> 
     <PaymentStatus>UNPAID</PaymentStatus> 
    </ticket> 
</Tickets> 

Вот код:

Dim xmlDoc As DOMDocument 
    Dim objNodeList As IXMLDOMNodeList 
    Dim objNodeList2 As IXMLDOMNodeList 
    Dim objProductNode As IXMLDOMNode 
    Dim objQuantityNode As IXMLDOMNode 
    Dim objNode As IXMLDOMNode 
    Dim objNode2 As IXMLDOMNode 
    Dim XMLurl As String 

Dim strRet As String

Set xmlDoc = New DOMDocument 
XMLurl = "c:\kyle.xml" 

xmlDoc.async = False 

If xmlDoc.Load(XMLurl) = False Then 
    MsgBox ("XML LOAD ERROR") 
Else 
    i = 0 
    Set objNodeList = xmlDoc.selectNodes("//items") 
    For Each objNode In objNodeList 

     mPrice = objNode.selectSingleNode("//price").Text 
     mPrice = objNode.selectSingleNode("//price").Text 
     mQty = objNode.selectSingleNode("//quantity").Text 
     mQty = objNode.selectSingleNode("//size").Text 

    Next 'objNode 

    ' get the modifiers for that node 
    Set objNodeList2 = xmlDoc.selectNodes("//Modifier") 
    For Each objNode2 In objNodeList2 

     mName = xmlDoc.selectSingleNode("//name").Text 
     mPrice = xmlDoc.selectSingleNode("//price").Text 
     mQty = xmlDoc.selectSingleNode("//quantity").Text 

    Next objNode2 
End If 

ответ

1

Используйте выражения относительный путь один раз вы выбрали ред узел, то есть изменить

Set objNodeList = xmlDoc.selectNodes("//items") 
For Each objNode In objNodeList 

    mPrice = objNode.selectSingleNode("//price").Text 
    mPrice = objNode.selectSingleNode("//price").Text 
    mQty = objNode.selectSingleNode("//quantity").Text 
    mQty = objNode.selectSingleNode("//size").Text 

Next 'objNode 

' get the modifiers for that node 
Set objNodeList2 = xmlDoc.selectNodes("//Modifier") 
For Each objNode2 In objNodeList2 

    mName = xmlDoc.selectSingleNode("//name").Text 
    mPrice = xmlDoc.selectSingleNode("//price").Text 
    mQty = xmlDoc.selectSingleNode("//quantity").Text 

Next objNode2 

в

Set objNodeList = xmlDoc.selectNodes("//item") 
For Each objNode In objNodeList 

    mPrice = objNode.selectSingleNode("price").Text 

    mQty = objNode.selectSingleNode("quantity").Text 
    mQty = objNode.selectSingleNode("size").Text 



' get the modifiers for that node 
Set objNodeList2 = objNode.selectNodes(".//modifier") 
For Each objNode2 In objNodeList2 

    mName = xmlDoc.selectSingleNode("name").Text 
    mPrice = xmlDoc.selectSingleNode("price").Text 
    mQty = xmlDoc.selectSingleNode("quantity").Text 

Next objNode2 
Next 
+0

Большое спасибо за помощь. Я попробовал, и сначала это не сработало, но я сделал изменения, и теперь он отлично работает! Вот обновленная версия: Для каждого objNode В objNodeList mName = objNode2.selectSingleNode ("имя") Текст mPrice = objNode2.selectSingleNode ("цена") Текст mQty = objNode2.selectSingleNode ("количество")... Текст Следующий objNode2 Следующий –

Смежные вопросы