Jump to content

TXT to XML - Can't look FileWrite() ?


Chad
 Share

Recommended Posts

Hello,

I'm trying to convert tabular data from a TXT file into XML. The project seems simple enough, use the XML template, fill in the blanks, and loop to fill out all the individual items contained in the source file. However for some reason it won't loop. I'm not quite sure what the issue is. I've included my code so far below.

Hopefully if I can get this loop part to work, I can finish the project rather swiftly.

#include <CSV.au3>
#Include <File.au3>

HotKeySet("{ESC}", "Terminate")

#region Input TXT Columns

Global $OrderID     = 0
Global $OrderDate   = 1
Global $ItemTitle   = 2
Global $ItemBrand   = 3
Global $ItemID      = 4
Global $SKU         = 5
Global $MPN         = 6
Global $UPC         = 7
Global $Quantity    = 8
Global $Price       = 9
Global $ShipCost    = 10
Global $Tax         = 11
Global $Total       = 12
Global $BuyerFN     = 13
Global $BuyerLN     = 14
Global $ShipAdd     = 15
Global $ShipCity    = 16
Global $ShipState   = 17
Global $ShipZip     = 18
Global $ShipCount   = 19
Global $Email       = 20
Global $Phone       = 21
Global $PayType     = 22
Global $PpID        = 23
Global $PayStat     = 24
Global $ProtEdge    = 25
Global $PendReas    = 26
Global $OrdCom      = 27
Global $SellID      = 28
Global $BuyerID     = 29
Global $FinalVal    = 30

#endregion

#region File Locations

Global $SellerID    = 2501

Global $sInput      = "C:\Documents and Settings\Pricefalls\Desktop\Chad\Projects\CSVtoXML\sample_order_sheet.txt"
Global $sOutput     = "C:\Documents and Settings\Pricefalls\Desktop\Chad\Projects\CSVtoXML\" & $SellerID & "_SalesSheet_" & @YEAR & @MON & @MDAY & ".txt"

#endregion

#region XML Header Construct

Global $XMLFile = FileOpen($sOutput,129)

Global $TimeStamp   = @YEAR & "-" & @MON & "-" & @MDAY & "T" & @HOUR & ":" & @MIN & ":" & @SEC & ".000Z"

    FileWriteLine($XMLFile, '<?xml version="1.0" encoding="UTF-8"?>'                                                                                                                )
    FileWriteLine($XMLFile, '<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">'   )
    FileWriteLine($XMLFile, '<soapenv:Header>'                                                                                                                                                                  )
    FileWriteLine($XMLFile, '            <ebl:RequesterCredentials soapenv:mustUnderstand="0" xmlns:ns="urn:ebay:apis:eBLBaseComponents" xmlns:ebl="urn:ebay:apis:eBLBaseComponents">'                          )
    FileWriteLine($XMLFile, '            <ebl:NotificationSignature xmlns:ebl="urn:ebay:apis:eBLBaseComponents">O8vGA/KYBSkJxHHeBgsmww==</ebl:NotificationSignature>'                                           )
    FileWriteLine($XMLFile, '            </ebl:RequesterCredentials>'                                                                                                               )
    FileWriteLine($XMLFile, '</soapenv:Header>'                                                                                                                                     )
    FileWriteLine($XMLFile, @CRLF                                                                                                                                                   )
    FileWriteLine($XMLFile, '<soapenv:Body>'                                                                                                                                        )
    FileWriteLine($XMLFile, '            <GetItemTransactionsResponse xmlns="urn:ebay:apis:eBLBaseComponents">'                                                                     )
    FileWriteLine($XMLFile, '            <Timestamp>' & $TimeStamp & '</Timestamp>'                                                                                                 )
    FileWriteLine($XMLFile, '            <Ack>Success</Ack>'                                                                                                                        )
    FileWriteLine($XMLFile, '            <CorrelationID></CorrelationID>'                                                                                                           )
    FileWriteLine($XMLFile, '            <Version></Version>'                                                                                                                       )
    FileWriteLine($XMLFile, '            <Build></Build>'                                                                                                                           )
    FileWriteLine($XMLFile, '            <NotificationEventName></NotificationEventName>'                                                                                           )
    FileWriteLine($XMLFile, '            <RecipientUserID>' & $SellerID & '</RecipientUserID>'                                                                                      )
    FileWriteLine($XMLFile, '            <EIASToken>N/A</EIASToken>'                                                                                                                )
    FileWriteLine($XMLFile, '            <PaginationResult>'                                                                                                                        )
    FileWriteLine($XMLFile, '            <TotalNumberOfPages>1</TotalNumberOfPages>'                                                                                                )
    FileWriteLine($XMLFile, '            <TotalNumberOfEntries>1</TotalNumberOfEntries>'                                                                                            )
    FileWriteLine($XMLFile, '            </PaginationResult>'                                                                                                                       )
    FileWriteLine($XMLFile, '            <HasMoreTransactions>false</HasMoreTransactions>'                                                                                          )
    FileWriteLine($XMLFile, '            <TransactionsPerPage>N/A</TransactionsPerPage>'                                                                                            )
    FileWriteLine($XMLFile, '            <PageNumber>N/A</PageNumber>'                                                                                                              )
    FileWriteLine($XMLFile, '        <ReturnedTransactionCountActual>N/A</ReturnedTransactionCountActual>'                                                                          )

#endregion

#region Items

$sFile              = _ParseCSV($sInput, @TAB)
$iCount             = Ubound($sFile)-1
$cCount             = Ubound($sFile,2)

#endregion

#region Create XML File

For $i = 1 to $iCount Step -1

    FileWriteLine($XMLFile, '        <Item>'                                                                                                                                        )
    FileWriteLine($XMLFile, '          <AutoPay>false</AutoPay>'                                                                                                                    )
    FileWriteLine($XMLFile, '            <BuyItNowPrice currencyID=USD>0.00</BuyItNowPrice>'                                                                                        )
    FileWriteLine($XMLFile, '            <Currency>USD</Currency>'                                                                                                                  )
    FileWriteLine($XMLFile, '            <ItemID>' & $sFile[$i][$ItemID] & '</ItemID>'                                                                                              )
    FileWriteLine($XMLFile, '                    <ListingDetails>'                                                                                                                  )
    FileWriteLine($XMLFile, '            <StartTime>N/A</StartTime>'                                                                                                                )
    FileWriteLine($XMLFile, '            <EndTime>N/A</EndTime>'                                                                                                                    )
    FileWriteLine($XMLFile, '            <ViewItemURL>http://www.pricefalls.com/detail.ctrl.php?item_id=' & $sFile[$i][$ItemID] & '</ViewItemURL>'                                  )
    FileWriteLine($XMLFile, '            <ViewItemURLForNaturalSearch>http://www.pricefalls.com/detail.ctrl.php?item_id=' & $sFile[$i][$ItemID] & '</ViewItemURLForNaturalSearch>'  )
    FileWriteLine($XMLFile, '        </ListingDetails>'                                                                                                                             )
    FileWriteLine($XMLFile, '        <ListingType>N/A</ListingType>'                                                                                                                )
    FileWriteLine($XMLFile, '        <PaymentMethods>' & $sFile[$i][$PayType] & '</PaymentMethods>'                                                                                 )
    FileWriteLine($XMLFile, '        <PrimaryCategory>'                                                                                                                             )
    FileWriteLine($XMLFile, '                <CategoryID>N/A</CategoryID>'                                                                                                          )
    FileWriteLine($XMLFile, '        </PrimaryCategory>'                                                                                                                            )
    FileWriteLine($XMLFile, '        <PrivateListing>false</PrivateListing>'                                                                                                        )
    FileWriteLine($XMLFile, '        <SecondaryCategory>'                                                                                                                           )
    FileWriteLine($XMLFile, '                <SecondaryCategory>'                                                                                                                   )
    FileWriteLine($XMLFile, '        </SecondaryCategory>'                                                                                                                          )
    FileWriteLine($XMLFile, '        <Seller>'                                                                                                                                      )
    FileWriteLine($XMLFile, '        <AboutMePage>false</AboutMePage>'                                                                                                              )
    FileWriteLine($XMLFile, '        <EIASToken>N/A</EIASToken>'                                                                                                                    )
    FileWriteLine($XMLFile, '        <Email>N/A</Email>'                                                                                                                            )
    FileWriteLine($XMLFile, '        <FeedbackScore>N/A</FeedbackScore>'                                                                                                            )
    FileWriteLine($XMLFile, '        <PositiveFeedbackPercent>N/A</PositiveFeedbackPercent>'                                                                                        )
    FileWriteLine($XMLFile, '        <FeedbackPrivate>false</FeedbackPrivate>'                                                                                                      )
    FileWriteLine($XMLFile, '        <FeedbackRatingStar>N/A</FeedbackRatingStar>'                                                                                                  )
    FileWriteLine($XMLFile, '        <IDVerified>false</IDVerified>'                                                                                                                )
    FileWriteLine($XMLFile, '        <eBayGoodStanding>N/A</eBayGoodStanding>'                                                                                                      )
    FileWriteLine($XMLFile, '        <NewUser>N/A</NewUser>'                                                                                                                        )
    FileWriteLine($XMLFile, '        <RegistrationDate>N/A</RegistrationDate>'                                                                                                      )
    FileWriteLine($XMLFile, '        <Site>US</Site>'                                                                                                                               )
    FileWriteLine($XMLFile, '        <Status>Confirmed</Status>'                                                                                                                    )
    FileWriteLine($XMLFile, '        <UserID>' & $sFile[$i][$SellID] &'</UserID>'                                                                                                   )
    FileWriteLine($XMLFile, '        <UserIDChanged>N/A</UserIDChanged>'                                                                                                            )
    FileWriteLine($XMLFile, '        <UserIDLastChanged>N/A</UserIDLastChanged>'                                                                                                    )
    FileWriteLine($XMLFile, '        <VATStatus>NoVATTax</VATStatus>'                                                                                                               )
    FileWriteLine($XMLFile, '                <SellerInfo>'                                                                                                                          )
    FileWriteLine($XMLFile, '                    <AllowPaymentEdit>true</AllowPaymentEdit>'                                                                                         )
    FileWriteLine($XMLFile, '                    <CheckoutEnabled>true</CheckoutEnabled>'                                                                                           )
    FileWriteLine($XMLFile, '                    <CIPBankAccountStored>false</CIPBankAccountStored>'                                                                                )
    FileWriteLine($XMLFile, '                    <GoodStanding>true</GoodStanding>'                                                                                                 )
    FileWriteLine($XMLFile, '                    <LiveAuctionAuthorized>false</LiveAuctionAuthorized>'                                                                              )
    FileWriteLine($XMLFile, '                    <MerchandizingPref>OptIn</MerchandizingPref>'                                                                                      )
    FileWriteLine($XMLFile, '                    <QualifiesForB2BVAT>false</QualifiesForB2BVAT>'                                                                                    )
    FileWriteLine($XMLFile, '                    <StoreOwner>true</StoreOwner>'                                                                                                     )
    FileWriteLine($XMLFile, '                    <SafePaymentExempt>false</SafePaymentExempt>'                                                                                      )
    FileWriteLine($XMLFile, '                </SellerInfo>'                                                                                                                         )
    FileWriteLine($XMLFile, '            </Seller>'                                                                                                                                 )
    FileWriteLine($XMLFile, '            <SellingStatus>'                                                                                                                           )
    FileWriteLine($XMLFile, '                   <ConvertedCurrentPrice currencyID="USD">' & $sFile[$i][$Total] & '</ConvertedCurrentPrice>'                                         )
    FileWriteLine($XMLFile, '                           <CurrentPrice currencyID="USD">' & $sFile[$i][$Total] & '</CurrentPrice>'                                                   )

Next

#endregion

#region Functions

Func Terminate()
    Exit 0
EndFunc   ;==>Terminate

#endregion

Exit

Any help is appreciated.

Best,

Chad

EDIT: Subject should say 'Loop' not 'Look'. Silly fingers...

Edited by Chad
Link to comment
Share on other sites

  • Moderators

Chad,

This line

For $i = 1 to $iCount Step -1

will cause problems in your loop as you are reducing the start count and so you are looking to read elements [1], [0], [-1], etc - little wonder it fails. :)

If you change it to read:

For $i = 1 to $iCount

You should find it loops as you expect.

You should also close the file with a FileClose line somewhere. ;)

M23

Public_Domain.png.2d871819fcb9957cf44f4514551a2935.png Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind

Open spoiler to see my UDFs:

Spoiler

ArrayMultiColSort ---- Sort arrays on multiple columns
ChooseFileFolder ---- Single and multiple selections from specified path treeview listing
Date_Time_Convert -- Easily convert date/time formats, including the language used
ExtMsgBox --------- A highly customisable replacement for MsgBox
GUIExtender -------- Extend and retract multiple sections within a GUI
GUIFrame ---------- Subdivide GUIs into many adjustable frames
GUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView items
GUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeView
Marquee ----------- Scrolling tickertape GUIs
NoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxes
Notify ------------- Small notifications on the edge of the display
Scrollbars ----------Automatically sized scrollbars with a single command
StringSize ---------- Automatically size controls to fit text
Toast -------------- Small GUIs which pop out of the notification area

 

Link to comment
Share on other sites

Chad,

This line

For $i = 1 to $iCount Step -1

will cause problems in your loop as you are reducing the start count and so you are looking to read elements [1], [0], [-1], etc - little wonder it fails. :)

If you change it to read:

For $i = 1 to $iCount

You should find it loops as you expect.

You should also close the file with a FileClose line somewhere. ;)

M23

Thanks so much, I actually did just that seconds after I posted. Derp. Works wonders now, thank you very much.

-Chad

Link to comment
Share on other sites

I would do it more like this:

Global $sHeader = '<?xml version="1.0" encoding="UTF-8"?>' & @CRLF & _
        '<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">' & @CRLF & _
        '<soapenv:Header>' & @CRLF & _
        '            <ebl:RequesterCredentials soapenv:mustUnderstand="0" xmlns:ns="urn:ebay:apis:eBLBaseComponents" xmlns:ebl="urn:ebay:apis:eBLBaseComponents">' & @CRLF & _
        '            <ebl:NotificationSignature xmlns:ebl="urn:ebay:apis:eBLBaseComponents">O8vGA/KYBSkJxHHeBgsmww==</ebl:NotificationSignature>' & @CRLF & _
        '            </ebl:RequesterCredentials>' & @CRLF & _
        '</soapenv:Header>' & @CRLF & _
        @CRLF & @CRLF & _
        '<soapenv:Body>' & @CRLF & _
        '            <GetItemTransactionsResponse xmlns="urn:ebay:apis:eBLBaseComponents">' & @CRLF & _
        '            <Timestamp>~~TimeStamp</Timestamp>' & @CRLF & _
        '            <Ack>Success</Ack>' & @CRLF & _
        '            <CorrelationID></CorrelationID>' & @CRLF & _
        '            <Version></Version>' & @CRLF & _
        '            <Build></Build>' & @CRLF & _
        '            <NotificationEventName></NotificationEventName>' & @CRLF & _
        '            <RecipientUserID>~~SellerID~~</RecipientUserID>' & @CRLF & _
        '            <EIASToken>N/A</EIASToken>' & @CRLF & _
        '            <PaginationResult>' & @CRLF & _
        '            <TotalNumberOfPages>1</TotalNumberOfPages>' & @CRLF & _
        '            <TotalNumberOfEntries>1</TotalNumberOfEntries>' & @CRLF & _
        '            </PaginationResult>' & @CRLF & _
        '            <HasMoreTransactions>false</HasMoreTransactions>' & @CRLF & _
        '            <TransactionsPerPage>N/A</TransactionsPerPage>' & @CRLF & _
        '            <PageNumber>N/A</PageNumber>' & @CRLF & _
        '        <ReturnedTransactionCountActual>N/A</ReturnedTransactionCountActual>' & @CRLF

Global $sItem = '        <Item>' & @CRLF & _
        '          <AutoPay>false</AutoPay>' & @CRLF & _
        '            <BuyItNowPrice currencyID=USD>0.00</BuyItNowPrice>' & @CRLF & _
        '            <Currency>USD</Currency>' & @CRLF & _
        '            <ItemID>~~ItemID~~</ItemID>' & @CRLF & _
        '                    <ListingDetails>' & @CRLF & _
        '            <StartTime>N/A</StartTime>' & @CRLF & _
        '            <EndTime>N/A</EndTime>' & @CRLF & _
        '            <ViewItemURL>http://www.pricefalls.com/detail.ctrl.php?item_id=~~ItemID~~</ViewItemURL>' & @CRLF & _
        '            <ViewItemURLForNaturalSearch>http://www.pricefalls.com/detail.ctrl.php?item_id=~~ItemID~~</ViewItemURLForNaturalSearch>' & @CRLF & _
        '        </ListingDetails>' & @CRLF & _
        '        <ListingType>N/A</ListingType>' & @CRLF & _
        '        <PaymentMethods>~~PayType~~</PaymentMethods>' & @CRLF & _
        '        <PrimaryCategory>' & @CRLF & _
        '                <CategoryID>N/A</CategoryID>' & @CRLF & _
        '        </PrimaryCategory>' & @CRLF & _
        '        <PrivateListing>false</PrivateListing>' & @CRLF & _
        '        <SecondaryCategory>' & @CRLF & _
        '                <SecondaryCategory>' & @CRLF & _
        '        </SecondaryCategory>' & @CRLF & _
        '        <Seller>' & @CRLF & _
        '        <AboutMePage>false</AboutMePage>' & @CRLF & _
        '        <EIASToken>N/A</EIASToken>' & @CRLF & _
        '        <Email>N/A</Email>' & @CRLF & _
        '        <FeedbackScore>N/A</FeedbackScore>' & @CRLF & _
        '        <PositiveFeedbackPercent>N/A</PositiveFeedbackPercent>' & @CRLF & _
        '        <FeedbackPrivate>false</FeedbackPrivate>' & @CRLF & _
        '        <FeedbackRatingStar>N/A</FeedbackRatingStar>' & @CRLF & _
        '        <IDVerified>false</IDVerified>' & @CRLF & _
        '        <eBayGoodStanding>N/A</eBayGoodStanding>' & @CRLF & _
        '        <NewUser>N/A</NewUser>' & @CRLF & _
        '        <RegistrationDate>N/A</RegistrationDate>' & @CRLF & _
        '        <Site>US</Site>' & @CRLF & _
        '        <Status>Confirmed</Status>' & @CRLF & _
        '        <UserID>~~SellID~~</UserID>' & @CRLF & _
        '        <UserIDChanged>N/A</UserIDChanged>' & @CRLF & _
        '        <UserIDLastChanged>N/A</UserIDLastChanged>' & @CRLF & _
        '        <VATStatus>NoVATTax</VATStatus>' & @CRLF & _
        '                <SellerInfo>' & @CRLF & _
        '                    <AllowPaymentEdit>true</AllowPaymentEdit>' & @CRLF & _
        '                    <CheckoutEnabled>true</CheckoutEnabled>' & @CRLF & _
        '                    <CIPBankAccountStored>false</CIPBankAccountStored>' & @CRLF & _
        '                    <GoodStanding>true</GoodStanding>' & @CRLF & _
        '                    <LiveAuctionAuthorized>false</LiveAuctionAuthorized>' & @CRLF & _
        '                    <MerchandizingPref>OptIn</MerchandizingPref>' & @CRLF & _
        '                    <QualifiesForB2BVAT>false</QualifiesForB2BVAT>' & @CRLF & _
        '                    <StoreOwner>true</StoreOwner>' & @CRLF & _
        '                    <SafePaymentExempt>false</SafePaymentExempt>' & @CRLF & _
        '                </SellerInfo>' & @CRLF & _
        '            </Seller>' & @CRLF & _
        '            <SellingStatus>' & @CRLF & _
        '                   <ConvertedCurrentPrice currencyID="USD">~~Total~~</ConvertedCurrentPrice>' & @CRLF & _
        '                           <CurrentPrice currencyID="USD">~~Total~~</CurrentPrice>' & @CRLF

#region XML Header Construct
Global $hXMLFile = FileOpen($sOutput, 129)
Global $TimeStamp = @YEAR & "-" & @MON & "-" & @MDAY & "T" & @HOUR & ":" & @MIN & ":" & @SEC & ".000Z"
Global $sData = StringReplace($sHeader, "~~TimeStamp~~", $TimeStamp)
$sData = StringReplace($sData, "~~SellerID~~", $SellerID)
FileWrite($hXMLFile, $sData)
#endregion XML Header Construct

#region Items
Global $aFile = _ParseCSV($sInput, @TAB)
If IsArray($aFile) And (UBound($aFile, 0) = 2) Then
    MsgBox(64, "Debug", "Array returned by _ParseCSV() = $aFile[" & UBound($aFile, 1) & "][" & UBound($aFile, 2) & "]")
Else
    MsgBox(16, "Debug", "Error:  $aFile returned by _ParseCSV() is invalid.")
    Exit
EndIf
$iCount = UBound($aFile) - 1
$cCount = UBound($aFile, 2)
#endregion Items

#region Create XML File
For $i = 1 To $iCount
    $sData = StringReplace($sItem, "~~ItemID~~", $aFile[$i][$ItemID])
    $sData = StringReplace($sData, "~~PayType~~", $aFile[$i][$PayType])
    $sData = StringReplace($sData, "~~SellID~~", $aFile[$i][$SellID])
    $sData = StringReplace($sData, "~~Total~~", $aFile[$i][$Total])
    FileWrite($hXMLFile, $sData)
Next
FileClose($hXMLFile)
#endregion Create XML File

Note there is a debug check to see that you get expected array back from _ParseCSV().

:)

Edited by PsaltyDS
Valuater's AutoIt 1-2-3, Class... Is now in Session!For those who want somebody to write the script for them: RentACoder"Any technology distinguishable from magic is insufficiently advanced." -- Geek's corollary to Clarke's law
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...