Extract list from XML

Just starting out? Need help? Post your questions and find answers here.
thanos
Enthusiast
Enthusiast
Posts: 423
Joined: Sat Jan 12, 2008 3:25 pm
Location: Greece
Contact:

Extract list from XML

Post by thanos »

Hello.
I took correctly the structure of <expensesInvoiceClassification> but i can't extract the list from the <invoicesExpensesClassificationDetails> key.

Code: Select all

EnableExplicit

#XML      = 0
#XML_TEXT = "<?xml version='1.0' encoding='utf-8'?>"                                        +
            "<RequestedDoc>"                                                                +
            "  <expensesClassificationsDoc>"                                                +
            "    <ls:expensesInvoiceClassification>"                                      +
            "      <ls:invoiceMark>600</ls:invoiceMark>"                                +
            "      <ls:invoicesExpensesClassificationDetails>"                            +
            "        <ls:lineNumber>1</ls:lineNumber>"                                  +
            "        <ls:expensesClassificationDetailData>"                               +
            "          <ls:classificationType>001</ls:classificationType>"              +
            "          <ls:classificationCategory>1</ls:classificationCategory>"        +
            "          <ls:amount>169.35</ls:amount>"                                   +
            "        </ls:expensesClassificationDetailData>"                              +
            "        <ls:expensesClassificationDetailData>"                               +
            "          <ls:classificationType>361</ls:classificationType>"              +
            "          <ls:classificationCategory>1</ls:classificationCategory>"        +
            "          <ls:amount>169.35</ls:amount>"                                   +
            "        </ls:expensesClassificationDetailData>"                              +
            "      </ls:invoicesExpensesClassificationDetails>"                           +
            "      <ls:invoicesExpensesClassificationDetails>"                            +
            "        <ls:lineNumber>2</ls:lineNumber>"                                  +
            "        <ls:expensesClassificationDetailData>"                               +
            "          <ls:classificationType>001</ls:classificationType>"              +
            "          <ls:classificationCategory>1</ls:classificationCategory>"        +
            "          <ls:amount>47.90</ls:amount>"                                    +
            "        </ls:expensesClassificationDetailData>"                              +
            "        <ls:expensesClassificationDetailData>"                               +
            "          <ls:classificationType>361</ls:classificationType>"              +
            "          <ls:classificationCategory>1</ls:classificationCategory>"        +
            "          <ls:amount>47.90</ls:amount>"                                    +
            "        </ls:expensesClassificationDetailData>"                              +
            "      </ls:invoicesExpensesClassificationDetails>"                           +
            "      <ls:invoicesExpensesClassificationDetails>"                            +
            "        <ls:lineNumber>3</ls:lineNumber>"                                  +
            "        <ls:expensesClassificationDetailData>"                               +
            "          <ls:classificationType>001</ls:classificationType>"              +
            "          <ls:classificationCategory>1</ls:classificationCategory>"        +
            "          <ls:amount>73.04</ls:amount>"                                    +
            "        </ls:expensesClassificationDetailData>"                              +
            "        <ls:expensesClassificationDetailData>"                               +
            "          <ls:classificationType>361</ls:classificationType>"              +
            "          <ls:classificationCategory>1</ls:classificationCategory>"        +
            "          <ls:amount>73.04</ls:amount>"                                    +
            "        </ls:expensesClassificationDetailData>"                              +
            "      </ls:invoicesExpensesClassificationDetails>"                           +
            "      <ls:invoicesExpensesClassificationDetails>"                            +
            "        <ls:lineNumber>4</ls:lineNumber>"                                  +
            "        <ls:expensesClassificationDetailData>"                               +
            "          <ls:classificationType>001</ls:classificationType>"              +
            "          <ls:classificationCategory>1</ls:classificationCategory>"        +
            "          <ls:amount>58.67</ls:amount>"                                    +
            "        </ls:expensesClassificationDetailData>"                              +
            "        <ls:expensesClassificationDetailData>"                               +
            "          <ls:classificationType>361</ls:classificationType>"              +
            "          <ls:classificationCategory>1</ls:classificationCategory>"        +
            "          <ls:amount>58.67</ls:amount>"                                    +
            "        </ls:expensesClassificationDetailData>"                              +
            "      </ls:invoicesExpensesClassificationDetails>"                           +
            "    </ls:expensesInvoiceClassification>"                                     +
            "    <ls:expensesInvoiceClassification>"                                      +
            "      <ls:invoiceMark>601</ls:invoiceMark>"                                +
            "      <ls:invoicesExpensesClassificationDetails>"                            +
            "        <ls:lineNumber>1</ls:lineNumber>"                                  +
            "        <ls:expensesClassificationDetailData>"                               +
            "          <ls:classificationType>001</ls:classificationType>"              +
            "          <ls:classificationCategory>1</ls:classificationCategory>"        +
            "          <ls:amount>511.29</ls:amount>"                                   +
            "        </ls:expensesClassificationDetailData>"                              +
            "        <ls:expensesClassificationDetailData>"                               +
            "          <ls:classificationType>361</ls:classificationType>"              +
            "          <ls:classificationCategory>1</ls:classificationCategory>"        +
            "          <ls:amount>511.29</ls:amount>"                                   +
            "        </ls:expensesClassificationDetailData>"                              +
            "      </ls:invoicesExpensesClassificationDetails>"                           +
            "    </ls:expensesInvoiceClassification>"                                     +
            "  </expensesClassificationsDoc>"                                               +
            "</RequestedDoc>"

Structure expensesClassificationDetailData
  classificationType.s
  classificationCategory.s
  amount.s
EndStructure

Structure invoicesExpensesClassificationDetails
  lineNumber.s
  List ExpenseClassDetails.expensesClassificationDetailData()
EndStructure

Structure expensesClassificationsDoc
  invoiceMark.s
  invoicesExpensesClassificationDetails.invoicesExpensesClassificationDetails  
EndStructure

Define NewList Expenses.expensesClassificationsDoc()
Define NewList Details.expensesClassificationDetailData()
Define Expense.expensesClassificationsDoc    
Define NodeText.s
Define sXML_Data.s
Define *MainNode
Define *ChildNode
Define Nodes
Define i
Define *Struct

sXML_Data = ReplaceString(#XML_TEXT, "ls:", "")

If ParseXML(#XML, sXML_Data)
  If XMLStatus(#XML) = #PB_XML_Success
    *MainNode = MainXMLNode(#XML)      
    *ChildNode = ChildXMLNode(*MainNode)
    While *ChildNode <> 0
      NodeText = GetXMLNodeName(*ChildNode)
      Select NodeText
        Case "expensesClassificationsDoc"
          Nodes = XMLChildCount(*ChildNode)
          For i = 1 To Nodes
            *Struct = ChildXMLNode(*ChildNode, i)
            If *Struct
              ;= Extract structure of the expense
              ExtractXMLStructure(*Struct, @Expense, expensesClassificationsDoc)
              
;=============>Trying to extract the list
              ExtractXMLList(*Struct, Details()) ;<========  Nothing
              
              AddElement(Expenses())
              Expenses() = Expense
            EndIf
          Next
      EndSelect
      *ChildNode = NextXMLNode(*ChildNode)
      If (*ChildNode <> 0)
        Debug GetXMLNodeName(*ChildNode)
        Debug GetXMLNodeText(*ChildNode)
      EndIf
    Wend
  EndIf
EndIf

ForEach Expenses()
  Debug Expenses()\invoiceMark
  Debug Expenses()\invoicesExpensesClassificationDetails\lineNumber
  ForEach Expenses()\invoicesExpensesClassificationDetails\ExpenseClassDetails()
    Debug Expenses()\invoicesExpensesClassificationDetails\ExpenseClassDetails()\classificationType
    Debug Expenses()\invoicesExpensesClassificationDetails\ExpenseClassDetails()\classificationCategory
    Debug Expenses()\invoicesExpensesClassificationDetails\ExpenseClassDetails()\amount
  Next
Next
Could someone help me to extract the list and ill the Details()?
Regards
» myPersonal Banker :: Because you do not need to have a master degree in economics in order to organize your finances!
infratec
Always Here
Always Here
Posts: 7576
Joined: Sun Sep 07, 2008 12:45 pm
Location: Germany

Re: Extract list from XML

Post by infratec »

Very very difficult in PB.

If you look at the help of InsertXMLList() you will find that all members of the list needs the xml tag <element>
If you have any chance use JSON.


The structures are Ok, but you can not add List in front of the lists, else it fails:

Code: Select all

EnableExplicit

#XML = 0
#XML_TEXT = "<?xml version='1.0' encoding='utf-8'?>" + #LF$ + 
            "<RequestedDoc>" + #LF$ + 
            "  <expensesClassificationsDoc>" + #LF$ + 
            "    <ls:expensesInvoiceClassification>" + #LF$ + 
            "      <ls:invoiceMark>600</ls:invoiceMark>" + #LF$ + 
            "      <ls:invoicesExpensesClassificationDetails>" + #LF$ + 
            "        <ls:lineNumber>1</ls:lineNumber>" + #LF$ + 
            "        <ls:expensesClassificationDetailData>" + #LF$ + 
            "          <ls:classificationType>001</ls:classificationType>" + #LF$ + 
            "          <ls:classificationCategory>1</ls:classificationCategory>" + #LF$ + 
            "          <ls:amount>169.35</ls:amount>" + #LF$ + 
            "        </ls:expensesClassificationDetailData>" + #LF$ + 
            "        <ls:expensesClassificationDetailData>" + #LF$ + 
            "          <ls:classificationType>361</ls:classificationType>" + #LF$ + 
            "          <ls:classificationCategory>1</ls:classificationCategory>" + #LF$ + 
            "          <ls:amount>169.35</ls:amount>" + #LF$ + 
            "        </ls:expensesClassificationDetailData>" + #LF$ + 
            "      </ls:invoicesExpensesClassificationDetails>" + #LF$ + 
            "      <ls:invoicesExpensesClassificationDetails>" + #LF$ + 
            "        <ls:lineNumber>2</ls:lineNumber>" + #LF$ + 
            "        <ls:expensesClassificationDetailData>" + #LF$ + 
            "          <ls:classificationType>001</ls:classificationType>" + #LF$ + 
            "          <ls:classificationCategory>1</ls:classificationCategory>" + #LF$ + 
            "          <ls:amount>47.90</ls:amount>" + #LF$ + 
            "        </ls:expensesClassificationDetailData>" + #LF$ + 
            "        <ls:expensesClassificationDetailData>" + #LF$ + 
            "          <ls:classificationType>361</ls:classificationType>" + #LF$ + 
            "          <ls:classificationCategory>1</ls:classificationCategory>" + #LF$ + 
            "          <ls:amount>47.90</ls:amount>" + #LF$ + 
            "        </ls:expensesClassificationDetailData>" + #LF$ + 
            "      </ls:invoicesExpensesClassificationDetails>" + #LF$ + 
            "      <ls:invoicesExpensesClassificationDetails>" + #LF$ + 
            "        <ls:lineNumber>3</ls:lineNumber>" + #LF$ + 
            "        <ls:expensesClassificationDetailData>" + #LF$ + 
            "          <ls:classificationType>001</ls:classificationType>" + #LF$ + 
            "          <ls:classificationCategory>1</ls:classificationCategory>" + #LF$ + 
            "          <ls:amount>73.04</ls:amount>" + #LF$ + 
            "        </ls:expensesClassificationDetailData>" + #LF$ + 
            "        <ls:expensesClassificationDetailData>" + #LF$ + 
            "          <ls:classificationType>361</ls:classificationType>" + #LF$ + 
            "          <ls:classificationCategory>1</ls:classificationCategory>" + #LF$ + 
            "          <ls:amount>73.04</ls:amount>" + #LF$ + 
            "        </ls:expensesClassificationDetailData>" + #LF$ + 
            "      </ls:invoicesExpensesClassificationDetails>" + #LF$ + 
            "      <ls:invoicesExpensesClassificationDetails>" + #LF$ + 
            "        <ls:lineNumber>4</ls:lineNumber>" + #LF$ + 
            "        <ls:expensesClassificationDetailData>" + #LF$ + 
            "          <ls:classificationType>001</ls:classificationType>" + #LF$ + 
            "          <ls:classificationCategory>1</ls:classificationCategory>" + #LF$ + 
            "          <ls:amount>58.67</ls:amount>" + #LF$ + 
            "        </ls:expensesClassificationDetailData>" + #LF$ + 
            "        <ls:expensesClassificationDetailData>" + #LF$ + 
            "          <ls:classificationType>361</ls:classificationType>" + #LF$ + 
            "          <ls:classificationCategory>1</ls:classificationCategory>" + #LF$ + 
            "          <ls:amount>58.67</ls:amount>" + #LF$ + 
            "        </ls:expensesClassificationDetailData>" + #LF$ + 
            "      </ls:invoicesExpensesClassificationDetails>" + #LF$ + 
            "    </ls:expensesInvoiceClassification>" + #LF$ + 
            "    <ls:expensesInvoiceClassification>" + #LF$ + 
            "      <ls:invoiceMark>601</ls:invoiceMark>" + #LF$ + 
            "      <ls:invoicesExpensesClassificationDetails>" + #LF$ + 
            "        <ls:lineNumber>1</ls:lineNumber>" + #LF$ + 
            "        <ls:expensesClassificationDetailData>" + #LF$ + 
            "          <ls:classificationType>001</ls:classificationType>" + #LF$ + 
            "          <ls:classificationCategory>1</ls:classificationCategory>" + #LF$ + 
            "          <ls:amount>511.29</ls:amount>" + #LF$ + 
            "        </ls:expensesClassificationDetailData>" + #LF$ + 
            "        <ls:expensesClassificationDetailData>" + #LF$ + 
            "          <ls:classificationType>361</ls:classificationType>" + #LF$ + 
            "          <ls:classificationCategory>1</ls:classificationCategory>" + #LF$ + 
            "          <ls:amount>511.29</ls:amount>" + #LF$ + 
            "        </ls:expensesClassificationDetailData>" + #LF$ + 
            "      </ls:invoicesExpensesClassificationDetails>" + #LF$ + 
            "    </ls:expensesInvoiceClassification>" + #LF$ + 
            "  </expensesClassificationsDoc>" + #LF$ + 
            "</RequestedDoc>"

Structure expensesClassificationDetailData_Structure
  classificationType.s
  classificationCategory.s
  amount.s
EndStructure

Structure invoicesExpensesClassificationDetails_Structure
  lineNumber.s
  expensesClassificationDetailData.expensesClassificationDetailData_Structure
EndStructure

Structure expensesInvoiceClassification_Structure
  invoiceMark.s
  invoicesExpensesClassificationDetails.invoicesExpensesClassificationDetails_Structure
EndStructure

Structure expensesClassificationsDoc_Structure
  expensesInvoiceClassification.expensesInvoiceClassification_Structure
EndStructure

Structure RequestedDoc_Structure
  expensesClassificationsDoc.expensesClassificationsDoc_Structure
EndStructure



Define sXML_Data.s
Define RequestedDoc.RequestedDoc_Structure


sXML_Data = RemoveString(#XML_TEXT, "ls:")

Debug sXML_Data

If ParseXML(#XML, sXML_Data)
  If XMLStatus(#XML) = #PB_XML_Success
    ExtractXMLStructure(MainXMLNode(#XML), @RequestedDoc, RequestedDoc_Structure)
    Debug RequestedDoc\expensesClassificationsDoc\expensesInvoiceClassification\invoiceMark
    Debug RequestedDoc\expensesClassificationsDoc\expensesInvoiceClassification\invoicesExpensesClassificationDetails\lineNumber
    Debug RequestedDoc\expensesClassificationsDoc\expensesInvoiceClassification\invoicesExpensesClassificationDetails\expensesClassificationDetailData\amount
  EndIf
EndIf
thanos
Enthusiast
Enthusiast
Posts: 423
Joined: Sat Jan 12, 2008 3:25 pm
Location: Greece
Contact:

Re: Extract list from XML

Post by thanos »

Thanks for your response
infratec wrote: Thu Oct 13, 2022 9:22 pm Very very difficult in PB.
I see

If you look at the help of InsertXMLList() you will find that all members of the list needs the xml tag <element>
If you have any chance use JSON.
There is no chance, except if i wrote from scratch a xml2json converter in PB

The structures are Ok, but you can not add List in front of the lists, else it fails:
Any workaround idea?
» myPersonal Banker :: Because you do not need to have a master degree in economics in order to organize your finances!
User avatar
StarBootics
Addict
Addict
Posts: 1006
Joined: Sun Jul 07, 2013 11:35 am
Location: Canada

Re: Extract list from XML

Post by StarBootics »

Hello thanos,

You have to do it the hard way like this :

Code: Select all

EnableExplicit

#XML      = 0
#XML_TEXT = "<?xml version='1.0' encoding='utf-8'?>"                                        +
            "<RequestedDoc>"                                                                +
            "  <expensesClassificationsDoc>"                                                +
            "    <ls:expensesInvoiceClassification>"                                      +
            "      <ls:invoiceMark>600</ls:invoiceMark>"                                +
            "      <ls:invoicesExpensesClassificationDetails>"                            +
            "        <ls:lineNumber>1</ls:lineNumber>"                                  +
            "        <ls:expensesClassificationDetailData>"                               +
            "          <ls:classificationType>001</ls:classificationType>"              +
            "          <ls:classificationCategory>1</ls:classificationCategory>"        +
            "          <ls:amount>169.35</ls:amount>"                                   +
            "        </ls:expensesClassificationDetailData>"                              +
            "        <ls:expensesClassificationDetailData>"                               +
            "          <ls:classificationType>361</ls:classificationType>"              +
            "          <ls:classificationCategory>1</ls:classificationCategory>"        +
            "          <ls:amount>169.35</ls:amount>"                                   +
            "        </ls:expensesClassificationDetailData>"                              +
            "      </ls:invoicesExpensesClassificationDetails>"                           +
            "      <ls:invoicesExpensesClassificationDetails>"                            +
            "        <ls:lineNumber>2</ls:lineNumber>"                                  +
            "        <ls:expensesClassificationDetailData>"                               +
            "          <ls:classificationType>001</ls:classificationType>"              +
            "          <ls:classificationCategory>1</ls:classificationCategory>"        +
            "          <ls:amount>47.90</ls:amount>"                                    +
            "        </ls:expensesClassificationDetailData>"                              +
            "        <ls:expensesClassificationDetailData>"                               +
            "          <ls:classificationType>361</ls:classificationType>"              +
            "          <ls:classificationCategory>1</ls:classificationCategory>"        +
            "          <ls:amount>47.90</ls:amount>"                                    +
            "        </ls:expensesClassificationDetailData>"                              +
            "      </ls:invoicesExpensesClassificationDetails>"                           +
            "      <ls:invoicesExpensesClassificationDetails>"                            +
            "        <ls:lineNumber>3</ls:lineNumber>"                                  +
            "        <ls:expensesClassificationDetailData>"                               +
            "          <ls:classificationType>001</ls:classificationType>"              +
            "          <ls:classificationCategory>1</ls:classificationCategory>"        +
            "          <ls:amount>73.04</ls:amount>"                                    +
            "        </ls:expensesClassificationDetailData>"                              +
            "        <ls:expensesClassificationDetailData>"                               +
            "          <ls:classificationType>361</ls:classificationType>"              +
            "          <ls:classificationCategory>1</ls:classificationCategory>"        +
            "          <ls:amount>73.04</ls:amount>"                                    +
            "        </ls:expensesClassificationDetailData>"                              +
            "      </ls:invoicesExpensesClassificationDetails>"                           +
            "      <ls:invoicesExpensesClassificationDetails>"                            +
            "        <ls:lineNumber>4</ls:lineNumber>"                                  +
            "        <ls:expensesClassificationDetailData>"                               +
            "          <ls:classificationType>001</ls:classificationType>"              +
            "          <ls:classificationCategory>1</ls:classificationCategory>"        +
            "          <ls:amount>58.67</ls:amount>"                                    +
            "        </ls:expensesClassificationDetailData>"                              +
            "        <ls:expensesClassificationDetailData>"                               +
            "          <ls:classificationType>361</ls:classificationType>"              +
            "          <ls:classificationCategory>1</ls:classificationCategory>"        +
            "          <ls:amount>58.67</ls:amount>"                                    +
            "        </ls:expensesClassificationDetailData>"                              +
            "      </ls:invoicesExpensesClassificationDetails>"                           +
            "    </ls:expensesInvoiceClassification>"                                     +
            "    <ls:expensesInvoiceClassification>"                                      +
            "      <ls:invoiceMark>601</ls:invoiceMark>"                                +
            "      <ls:invoicesExpensesClassificationDetails>"                            +
            "        <ls:lineNumber>1</ls:lineNumber>"                                  +
            "        <ls:expensesClassificationDetailData>"                               +
            "          <ls:classificationType>001</ls:classificationType>"              +
            "          <ls:classificationCategory>1</ls:classificationCategory>"        +
            "          <ls:amount>511.29</ls:amount>"                                   +
            "        </ls:expensesClassificationDetailData>"                              +
            "        <ls:expensesClassificationDetailData>"                               +
            "          <ls:classificationType>361</ls:classificationType>"              +
            "          <ls:classificationCategory>1</ls:classificationCategory>"        +
            "          <ls:amount>511.29</ls:amount>"                                   +
            "        </ls:expensesClassificationDetailData>"                              +
            "      </ls:invoicesExpensesClassificationDetails>"                           +
            "    </ls:expensesInvoiceClassification>"                                     +
            "  </expensesClassificationsDoc>"                                               +
            "</RequestedDoc>"

Structure expensesClassificationDetailData
  classificationType.s
  classificationCategory.s
  amount.s
EndStructure

Structure invoicesExpensesClassificationDetails
  lineNumber.s
  List ExpenseClassDetails.expensesClassificationDetailData()
EndStructure

Structure expensesClassificationsDoc
  
  invoiceMark.s
  List invoicesExpensesClassificationDetails.invoicesExpensesClassificationDetails()
  
EndStructure




Define NewList Expenses.expensesClassificationsDoc()
; Define NewList Details.expensesClassificationDetailData()
; Define Expense.expensesClassificationsDoc
Define NodeText.s
Define sXML_Data.s
Define *MainNode
Define *ChildNode
Define Nodes
Define Nodes2
Define i
Define *Struct
Define *SubStruct
Define *SubSubStruct
Define *SubSubSubStruct

sXML_Data = ReplaceString(#XML_TEXT, "ls:", "")

If ParseXML(#XML, sXML_Data)
  If XMLStatus(#XML) = #PB_XML_Success
    *MainNode = MainXMLNode(#XML)      
    *ChildNode = ChildXMLNode(*MainNode)
    While *ChildNode <> 0
      NodeText = GetXMLNodeName(*ChildNode)
      Select NodeText
        Case "expensesClassificationsDoc"
          Nodes = XMLChildCount(*ChildNode)
          For i = 1 To Nodes
            *Struct = ChildXMLNode(*ChildNode, i)
            If *Struct
              
              *SubStruct = ChildXMLNode(*Struct)
              
              While *SubStruct <> 0
                
                Select GetXMLNodeName(*SubStruct)
                    
                  Case "invoiceMark"
                    AddElement(Expenses())
                    Expenses()\invoiceMark = GetXMLNodeText(*SubStruct)
                    
                  Case "invoicesExpensesClassificationDetails"
                    
                    *SubSubStruct = ChildXMLNode(*SubStruct)
                    
                    While *SubSubStruct <> 0
                      
                      Select GetXMLNodeName(*SubSubStruct)
                          
                        Case "lineNumber"
                          AddElement(Expenses()\invoicesExpensesClassificationDetails())
                          Expenses()\invoicesExpensesClassificationDetails()\lineNumber = GetXMLNodeText(*SubSubStruct)
                          
                        Case "expensesClassificationDetailData" 
                          
                          *SubSubSubStruct = ChildXMLNode(*SubSubStruct)
                          
                          AddElement(Expenses()\invoicesExpensesClassificationDetails()\ExpenseClassDetails())
                          
                          While *SubSubSubStruct <> 0
                            
                            Select GetXMLNodeName(*SubSubSubStruct)
                                
                              Case "classificationType"
                                Expenses()\invoicesExpensesClassificationDetails()\ExpenseClassDetails()\classificationType = GetXMLNodeText(*SubSubSubStruct)
                                
                              Case "classificationCategory" 
                                Expenses()\invoicesExpensesClassificationDetails()\ExpenseClassDetails()\classificationCategory = GetXMLNodeText(*SubSubSubStruct)
                                
                              Case "amount"
                                Expenses()\invoicesExpensesClassificationDetails()\ExpenseClassDetails()\amount = GetXMLNodeText(*SubSubSubStruct)
                                
                            EndSelect
                            
                                
                            *SubSubSubStruct = NextXMLNode(*SubSubSubStruct)
                            
                          Wend
                          
                      EndSelect
                      
                      *SubSubStruct = NextXMLNode(*SubSubStruct)
                      
                    Wend
                    
                EndSelect
                
                *SubStruct = NextXMLNode(*SubStruct)
                
              Wend
              
            EndIf
            
          Next
          
      EndSelect
      *ChildNode = NextXMLNode(*ChildNode)
      If (*ChildNode <> 0)
        Debug GetXMLNodeName(*ChildNode)
        Debug GetXMLNodeText(*ChildNode)
      EndIf
    Wend
  EndIf
EndIf

ForEach Expenses()
  
  Debug Expenses()\invoiceMark
  
  ForEach Expenses()\invoicesExpensesClassificationDetails()
    
    Debug Expenses()\invoicesExpensesClassificationDetails()\lineNumber
    
    ForEach Expenses()\invoicesExpensesClassificationDetails()\ExpenseClassDetails()
      
      Debug Expenses()\invoicesExpensesClassificationDetails()\ExpenseClassDetails()\classificationType
      Debug Expenses()\invoicesExpensesClassificationDetails()\ExpenseClassDetails()\classificationCategory
      Debug Expenses()\invoicesExpensesClassificationDetails()\ExpenseClassDetails()\amount
      
    Next
    
    
  Next
  
Next
Best regards
StarBootics
The Stone Age did not end due to a shortage of stones !
thanos
Enthusiast
Enthusiast
Posts: 423
Joined: Sat Jan 12, 2008 3:25 pm
Location: Greece
Contact:

Re: Extract list from XML

Post by thanos »

StarBootics wrote: Fri Oct 14, 2022 5:42 am Hello thanos,
You have to do it the hard way like this :
...
Best regards
StarBootics
It works, so it is perfect!
I tried with the same logic with you , but without success with the sublevels.
Thank you very much!
Best regards

Thanos
» myPersonal Banker :: Because you do not need to have a master degree in economics in order to organize your finances!
Post Reply