plameni Posted May 29 Share Posted May 29 Търся помощ за обработка на текстов файл от вида: ^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? Quote Link to comment Share on other sites More sharing options...
EEK! Posted May 29 Share Posted May 29 Първите две променливи да кажем че са ясни. Обаче многоредовия FC_VE? {INFO_No = 5, FC_BNR= 12345, FC_VE=ABC FC_VE=DEF FC_VE=GHI ...., FC_CHARGE=Charge-789 } И тази структура еднократна ли е, или започва да се повтаря отново с NFO_No = 6.... Quote Link to comment Share on other sites More sharing options...
plameni Posted May 29 Author Share Posted May 29 Това ми трябва като резултат: <?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 структурата е повтаряема, с различни данни, но при нов джоб може да бъде различна. Quote Link to comment Share on other sites More sharing options...
EEK! Posted May 29 Share Posted May 29 Грозно и недовършено, добре че 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 +'>') Quote Link to comment Share on other sites More sharing options...
plameni Posted May 29 Author Share Posted May 29 Огромно благодаря. Насочиха ме и към ChatGPT, та след кратък "разговор" получих python код за XML и за csv, с отчитане на многоредовия FC_VE Твоето решение май е по-универсално, защото всеки елемент може да е многоредов Quote Link to comment Share on other sites More sharing options...
plameni Posted May 29 Author Share Posted May 29 Питах 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> Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.