Jump to content
BulForum.com

convert/import/parsing ^FIELD


Recommended Posts

Търся помощ за обработка на текстов файл от вида:

 

^JOB file.encoding=UTF-8
^FIELD INFO_No
5
^FIELD FC_BNR
12345
^FIELD FC_VE
ABC DEF
GHI JKL MNO
pqrstu vwxyz 123 456
^FIELD FC_CHARGE
Charge-789

 

Очевидно с ^FIELD се задава име на поле/променлива/идентификатор, а редовете до следващия ^FIELD са съдържанието.

 

Някакви идеи, какво мога да използвам за конвертиране към XML или за директен импорт напр. в Excel?

Link to comment
Share on other sites

Първите две променливи да кажем че са ясни.

Обаче многоредовия FC_VE?

{INFO_No = 5,

FC_BNR= 12345,

   FC_VE=ABC

   FC_VE=DEF

   FC_VE=GHI

   ....,

FC_CHARGE=Charge-789

}

И тази структура еднократна ли е, или започва да се повтаря отново с NFO_No = 6....

Link to comment
Share on other sites

Това ми трябва като резултат:

 

<?xml version="1.0" encoding="UTF-8" ?>
<job>
    <INFO_No>5</INFO_No>
    <FC_BNR>12345</FC_BNR>
    <FC_VE>
        ABC DEF
        GHI JKL MNO
        pqrstu vwxyz 123 456
    </FC_VE>
    <FC_CHARGE>Charge-789</FC_CHARGE>
</job>

 

или това:

INFO_No;FC_BNR;FC_VE;FC_CHARGE
"5";"12345";"ABC DEF
GHI JKL MNO
pqrstu vwxyz 123 456";"Charge-789"

 

За конкретен job структурата е повтаряема, с различни данни, но при нов джоб може да бъде различна. 

Link to comment
Share on other sites

Грозно и недовършено, добре че xml не се вълнува от CRLF

$file = Get-Content -Path ".\job.txt"

$prefix = "^FIELD "

$fieldName=""

 

foreach ($line in $file){

  #Write-Host $line

  if ($line.StartsWith($prefix)) {

    if ($fieldName -eq '' ) {

        $fieldName = $line.Replace($prefix, "")

        Write-Host ('<'+ $fieldName +'>') }

    else {

        Write-Host ('</'+ $fieldName +'>')

        $fieldName = $line.Replace($prefix, "")

        Write-Host ('<'+ $fieldName +'>')

    }

    }

    else {

        $line

    }

  }

  Write-Host ('</'+ $fieldName +'>')

Link to comment
Share on other sites

Огромно благодаря.

Насочиха ме и към ChatGPT, та след кратък "разговор" получих python код за XML и за csv, с отчитане на многоредовия FC_VE

 

Твоето решение май е по-универсално, защото всеки елемент може да е многоредов

Link to comment
Share on other sites

Питах ChatGPT за многоредово решение всяко поле и той се презастрахова със CDATA секции:

 

<INFO_No><![CDATA[5]]></INFO_No>
<FC_BNR><![CDATA[12345]]></FC_BNR>
<FC_VE><![CDATA[ABC DEF
GHI JKL MNO
pqrstu vwxyz 123 456]]></FC_VE>
<FC_CHARGE><![CDATA[Charge-789]]></FC_CHARGE>

 

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...