XML + УФЭБС
Модератор: Дед Пахом
Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
XML + УФЭБС
Страна потихоньку переходит на УФЭБС (я про банки говорю).
В связи с этим вопрос/просьба.
Реализовывал ли кто-нибудь чтение этих XML-файлов?
Если да, то может быть поделитесь если не исходниками, то кратким разъяснением в какую сторону копать?
На форуме искал. Нашел пример. Не совсем понял как быть, если я, например, теги xml-файла не знаю заранее?
В связи с этим вопрос/просьба.
Реализовывал ли кто-нибудь чтение этих XML-файлов?
Если да, то может быть поделитесь если не исходниками, то кратким разъяснением в какую сторону копать?
На форуме искал. Нашел пример. Не совсем понял как быть, если я, например, теги xml-файла не знаю заранее?
вот пример, который не парсится:
Код: Выделить всё
<?xml version="1.0" encoding="windows-1251"?>
<PacketEPD EDNo="20000" EDDate="2004-07-30" EDAuthor="4525983000" EDQuantity="6" Sum="4897510000" SystemCode="01" xmlns="urn:cbr-ru:ed:v1.1">
<ED101 EDNo="20000" EDDate="2004-07-30" EDAuthor="4525983000" PaytKind="1" Sum="4000000000" TransKind="01" Priority="6" ReceiptDate="2004-07-30" ChargeOffDate="2004-07-30" SystemCode="01">
<AccDoc AccDocNo="188" AccDocDate="2004-07-30"/>
<Payer INN="007701028536" PersonalAcc="31304810100000000823">
<Name>ООО КБ "Огни Москвы"</Name>
<Bank BIC="044525983" CorrespAcc="30101810700000000983"/>
</Payer>
<Payee INN="7744001497" PersonalAcc="47423810000000000037">
<Name>ЗАО АБ "Газпромбанк"</Name>
<Bank BIC="044525823" CorrespAcc="30101810200000000823"/>
</Payee>
<Purpose>Возврат мбк от 29.07.04</Purpose>
</ED101>
<ED101 EDNo="20001" EDDate="2004-07-30" EDAuthor="4525983000" PaytKind="1" Sum="9210000" TransKind="01" Priority="6" ReceiptDate="2004-07-30" ChargeOffDate="2004-07-30" SystemCode="01">
<AccDoc AccDocNo="184" AccDocDate="2004-07-30"/>
<Payer INN="007701028536" PersonalAcc="40906810100080000083">
<Name>ООО КБ "Огни Москвы"</Name>
<Bank BIC="044525983" CorrespAcc="30101810700000000983"/>
</Payer>
<Payee INN="7733021244" PersonalAcc="40702810338260106536">
<Name>ООО "ЛЮБАВА"</Name>
<Bank BIC="044525225" CorrespAcc="30101810400000000225"/>
</Payee>
<Purpose>Перечисление согласно договора</Purpose>
</ED101>
<ED101 EDNo="20002" EDDate="2004-07-30" EDAuthor="4525983000" PaytKind="1" Sum="14760000" TransKind="01" Priority="6" ReceiptDate="2004-07-30" ChargeOffDate="2004-07-30" SystemCode="01">
<AccDoc AccDocNo="181" AccDocDate="2004-07-30"/>
<Payer INN="007701028536" PersonalAcc="40906810800080000079">
<Name>ООО КБ "Огни Москвы"</Name>
<Bank BIC="044525983" CorrespAcc="30101810700000000983"/>
</Payer>
<Payee INN="7735002550" PersonalAcc="40702810912110000015">
<Name>ООО "Комис-20"</Name>
<Bank BIC="044583345" CorrespAcc="30101810500000000345"/>
</Payee>
<Purpose>Перечисление согласно договора</Purpose>
</ED101>
<ED101 EDNo="20003" EDDate="2004-07-30" EDAuthor="4525983000" PaytKind="1" Sum="49490000" TransKind="01" Priority="6" ReceiptDate="2004-07-30" ChargeOffDate="2004-07-30" SystemCode="01">
<AccDoc AccDocNo="180" AccDocDate="2004-07-30"/>
<Payer INN="007701028536" PersonalAcc="40906810500080000078">
<Name>ООО КБ "Огни Москвы"</Name>
<Bank BIC="044525983" CorrespAcc="30101810700000000983"/>
</Payer>
<Payee INN="5036057962" PersonalAcc="40702810112110000022">
<Name>ООО"Торговая сеть"Подольский Квартал"</Name>
<Bank BIC="044583345" CorrespAcc="30101810500000000345"/>
</Payee>
<Purpose>Перечисление согласно договора</Purpose>
</ED101>
<ED101 EDNo="20004" EDDate="2004-07-30" EDAuthor="4525983000" PaytKind="1" Sum="15580000" TransKind="01" Priority="6" ReceiptDate="2004-07-30" ChargeOffDate="2004-07-30" SystemCode="01">
<AccDoc AccDocNo="179" AccDocDate="2004-07-30"/>
<Payer INN="007701028536" PersonalAcc="40906810200080000077">
<Name>ООО КБ "Огни Москвы"</Name>
<Bank BIC="044525983" CorrespAcc="30101810700000000983"/>
</Payer>
<Payee INN="7735108290" PersonalAcc="40702810712110000024">
<Name>ООО "АСП-Групп"</Name>
<Bank BIC="044583345" CorrespAcc="30101810500000000345"/>
</Payee>
<Purpose>Перечисление согласно договора</Purpose>
</ED101>
<ED101 EDNo="20005" EDDate="2004-07-30" EDAuthor="4525983000" PaytKind="1" Sum="808470000" TransKind="01" Priority="6" ReceiptDate="2004-07-30" ChargeOffDate="2004-07-30" SystemCode="01">
<AccDoc AccDocNo="178" AccDocDate="2004-07-30"/>
<Payer INN="007701028536" PersonalAcc="40906810900080000076">
<Name>ООО КБ "Огни Москвы"</Name>
<Bank BIC="044525983" CorrespAcc="30101810700000000983"/>
</Payer>
<Payee INN="7725141594" PersonalAcc="40702810838260106049">
<Name>ООО "Торкас"</Name>
<Bank BIC="044525225" CorrespAcc="30101810400000000225"/>
</Payee>
<Purpose>Перечисление согласно договора 01/33-210 от 01.06.2004</Purpose>
</ED101>
</PacketEPD>
- Игорь Столяров
- Ветеран движения
- Сообщения: 8020
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 28 раз
- Поблагодарили: 94 раза
Можно я прерву твой монолог ... ? 
Посмотри FreeWare библиотеку IQXML для работы с XML структурами.
Ссылка на страничку: http://www.innquest.com/iqxml/
Все, что нужно - там есть.
Работа с "русскими" XML файлами проверена на многих программах (в т.ч. и для банков), хотя есть некоторые "особенности" ...

Посмотри FreeWare библиотеку IQXML для работы с XML структурами.
Ссылка на страничку: http://www.innquest.com/iqxml/
Все, что нужно - там есть.
Работа с "русскими" XML файлами проверена на многих программах (в т.ч. и для банков), хотя есть некоторые "особенности" ...

- Игорь Столяров
- Ветеран движения
- Сообщения: 8020
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 28 раз
- Поблагодарили: 94 раза
Что есть "большой файл" ? Цифру можно озвучить ?
Как говорил дворник в одном произведении "Кому и кобыла невеста ..."
))
У меня без проблем последний релиз IQXML пишет и парсит 20 MByte XML файлы. Думаю и далее проблем быть не должно - просто реального опыта работы с большими размерами файлов у меня нет ...
Как говорил дворник в одном произведении "Кому и кобыла невеста ..."

У меня без проблем последний релиз IQXML пишет и парсит 20 MByte XML файлы. Думаю и далее проблем быть не должно - просто реального опыта работы с большими размерами файлов у меня нет ...
Качни http://www.tacis-dipol.ru/fil/xml1251.zip и будет тебе щастье.AnDS писал(а):вот пример, который не парсится:
- Admin
- Администратор
- Сообщения: 4010
- Зарегистрирован: 05 Июль 2005, 15:59
- Откуда: Хабаровск
- Благодарил (а): 53 раза
- Поблагодарили: 33 раза
- Контактная информация:
Вот на Васике есть ...
Код: Выделить всё
' Decodes a base-64 encoded string (BSTR type).
' 1999 - 2004 Antonin Foller, http://www.motobit.com
' 1.01 - solves problem with Access And 'Compare Database' (InStr)
Function Base64Decode(ByVal base64String)
'rfc1521
'1999 Antonin Foller, Motobit Software, http://Motobit.cz
Const Base64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
Dim dataLength, sOut, groupBegin
'remove white spaces, If any
base64String = Replace(base64String, vbCrLf, "")
base64String = Replace(base64String, vbTab, "")
base64String = Replace(base64String, " ", "")
'The source must consists from groups with Len of 4 chars
dataLength = Len(base64String)
If dataLength Mod 4 <> 0 Then
Err.Raise 1, "Base64Decode", "Bad Base64 string."
Exit Function
End If
' Now decode each group:
For groupBegin = 1 To dataLength Step 4
Dim numDataBytes, CharCounter, thisChar, thisData, nGroup, pOut
' Each data group encodes up To 3 actual bytes.
numDataBytes = 3
nGroup = 0
For CharCounter = 0 To 3
' Convert each character into 6 bits of data, And add it To
' an integer For temporary storage. If a character is a '=', there
' is one fewer data byte. (There can only be a maximum of 2 '=' In
' the whole string.)
thisChar = Mid(base64String, groupBegin + CharCounter, 1)
If thisChar = "=" Then
numDataBytes = numDataBytes - 1
thisData = 0
Else
thisData = InStr(1, Base64, thisChar, vbBinaryCompare) - 1
End If
If thisData = -1 Then
Err.Raise 2, "Base64Decode", "Bad character In Base64 string."
Exit Function
End If
nGroup = 64 * nGroup + thisData
Next
'Hex splits the long To 6 groups with 4 bits
nGroup = Hex(nGroup)
'Add leading zeros
nGroup = String(6 - Len(nGroup), "0") & nGroup
'Convert the 3 byte hex integer (6 chars) To 3 characters
pOut = Chr(CByte("&H" & Mid(nGroup, 1, 2))) + _
Chr(CByte("&H" & Mid(nGroup, 3, 2))) + _
Chr(CByte("&H" & Mid(nGroup, 5, 2)))
'add numDataBytes characters To out string
sOut = sOut & Left(pOut, numDataBytes)
Next
Base64Decode = sOut
End Function
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса