powered by simpleCommunicator - 2.0.39     © 2025 Programmizd 02
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / работа с файлами xml
14 сообщений из 14, страница 1 из 1
работа с файлами xml
    #38627358
PlanB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день!

Программа умеет выдавать на гора только определенный вид файлов (см. приложение). тысяча таких формируются автоматом и складываются в папку. меня в каждом из них интересует последняя таблица (см. под кат).


Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
-<ParamMatrix>
<PCell parameterName="P0000001" df="1" beta="-16.265042538378" targetCategory="1"/>
<PCell parameterName="P0000002" df="1" beta="-0.0296017502003447" targetCategory="1"/>
<PCell parameterName="P0000003" df="1" beta="-0.0512513238133668" targetCategory="1"/>
<PCell parameterName="P0000004" df="1" beta="0.0433750216435762" targetCategory="1"/>
<PCell parameterName="P0000005" df="1" beta="0.107273712822033" targetCategory="1"/>
<PCell parameterName="P0000006" df="1" beta="-1.54871691776293" targetCategory="1"/>
<PCell parameterName="P0000007" df="1" beta="-4.20510832116267" targetCategory="1"/>
<PCell parameterName="P0000008" df="1" beta="-4.13004809556695" targetCategory="1"/>
<PCell parameterName="P0000009" df="1" beta="0.00632472367482767" targetCategory="1"/>
<PCell parameterName="P0000010" df="1" beta="11.7089646291283" targetCategory="1"/>
<PCell parameterName="P0000011" df="1" beta="14.4793862275839" targetCategory="1"/>
<PCell parameterName="P0000012" df="1" beta="13.0082564840085" targetCategory="1"/>
<PCell parameterName="P0000013" df="1" beta="14.6235447900282" targetCategory="1"/>
<PCell parameterName="P0000014" df="1" beta="-2.39641954960467" targetCategory="1"/>
<PCell parameterName="P0000015" df="1" beta="-14.1547565951222" targetCategory="1"/>
<PCell parameterName="P0000016" df="1" beta="3.85508385814786" targetCategory="1"/>
<PCell parameterName="P0000017" df="1" beta="-0.361305410611821" targetCategory="1"/>
<PCell parameterName="P0000018" df="1" beta="-5.93324602559885E-005" targetCategory="1"/>
<PCell parameterName="P0000019" df="1" beta="4.05250824274371E-005" targetCategory="1"/>
<PCell parameterName="P0000020" df="1" beta="-0.0144582157633865" targetCategory="1"/>
<PCell parameterName="P0000021" df="1" beta="0.888019931765327" targetCategory="1"/>
<PCell parameterName="P0000022" df="1" beta="-0.496509391954658" targetCategory="1"/>
<PCell parameterName="P0000023" df="1" beta="1.23439655202224" targetCategory="1"/>
<PCell parameterName="P0000024" df="1" beta="2.47476640971471" targetCategory="1"/>
<PCell parameterName="P0000025" df="1" beta="0.207897447604417" targetCategory="1"/>
</ParamMatrix>



Я не очень понимаю, что такое xml документ. Не могли бы Вы пояснить мне для общего развития, как с ним правильно работать.

Всем спасибо за ответы!
...
Рейтинг: 0 / 0
работа с файлами xml
    #38627361
PlanB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
сразу поясню, что я вполне способен написать обходчик файлов и повыдергивать эти циферки в excel. просто хочется понять, что это вообще такое.
...
Рейтинг: 0 / 0
работа с файлами xml
    #38627367
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет.
PlanBЯ не очень понимаю, что такое xml документ.Но что такое иерархическая стрктура ты же вполне понимаешь? xml документ - это просто дерево узлов, представленное в определенном формате. Для его обработки (на уровне узлов, а не на уровне текста документа) существует масса инструментов, в том числе и встроенные в винду. Набери xml в поиске даже тут - в подфоруме Visual Basic - получишь массу примеров.
...
Рейтинг: 0 / 0
работа с файлами xml
    #38627387
PlanB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro, привет) а низя обратиться сразу к таблице? я-то собираюсь парсить код. не думаю, что это оптимальное решение
...
Рейтинг: 0 / 0
работа с файлами xml
    #38627405
Казанский
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Можно работать с этим файлом как с обычным текстовым файлом - считать в переменную, найти "<ParamMatrix >" (с пробелом!) и "</ParamMatrix>", потом Split по beta=", Val.
...
Рейтинг: 0 / 0
работа с файлами xml
    #38627618
Казанский
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот функция, которая получает путь к файлу и возвращает числовой массив. Не думаю, что с XMLDOM получится проще.
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
Function ParamMatrix(filePath, arr() As Double) As Boolean
Dim s$(), t$, i&, f%
On Error GoTo ex
f = FreeFile
Open filePath For Input Access Read As f
t = Input(LOF(f), f)
Close f
i = InStr(t, "<ParamMatrix >")
If i Then
  s = Split(Mid$(t, i + 15), "beta=""")
  ReDim arr(1 To UBound(s))
  For i = 1 To UBound(s)
    arr(i) = Val(s(i))
  Next
  ParamMatrix = True
End If
ex:
End Function

Sub test()
Dim a() As Double
If ParamMatrix("C:\temp\ssd_1.xml", a) Then
  Range("A1").Resize(UBound(a)).Value = Application.Transpose(a)
Else: MsgBox "не получилось"
End If
End Sub
...
Рейтинг: 0 / 0
работа с файлами xml
    #38627841
sergeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Где-то так. В Tools\References поставить галочку на Microsoft XML

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
Option Explicit
Dim fileToOpen As Variant, XMLDoc As New DOMDocument, xmlE As IXMLDOMElement, XMLNode As IXMLDOMNode

Sub Start()
  Application.Visible = True: Application.ScreenUpdating = True
  fileToOpen = Application.GetOpenFilename("Files XML (*.xml), *.xml", , "Выберите ваш файл")
  If VarType(fileToOpen) = vbBoolean Then End
  XMLDoc.Load fileToOpen
  Set XMLNode = XMLDoc.documentElement
  If XMLNode Is Nothing Then
    MsgBox ("Похоже файл не XML. Попробуйте закрыть и вновь запустить Excel")
    End
  End If
  For Each xmlE In XMLDoc.getElementsByTagName("ParamMatrix/PCell")
    MsgBox xmlE.getAttribute("parameterName")
    MsgBox xmlE.getAttribute("beta")
  Next xmlE
End Sub 'Start
...
Рейтинг: 0 / 0
работа с файлами xml
    #38628600
PlanB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ребят, спасибо большое!
...
Рейтинг: 0 / 0
работа с файлами xml
    #38777136
PlanB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день!

Возникла похожая задача - вытащить данные из xml-файла. Не могу разобраться со структурой. Интересуют данные по CustomerInfo. Пример структуры под спойлером.
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
-<ED374 EDNo="1001967" EDDate="2014-01-08" EDAuthor="4583001999" DictionMode="2" xmlns="urn:cbr-ru:ed:v2.0">
<dsig:SigValue xmlns:dsig="urn:cbr-ru:dsig:v1.1">bzAwMDAwMJOQXAofU5tvZ1BBBv4QlYv4HuM+NF1NWcJTCcmluI9tVfjEkokuHJ9vFn4gmWpcG/9z0GqvA6YCL/g5hdFii4gwMjQ3UzlRQUlLMDET2MxSnZaPTUVNAWmBEAA=</dsig:SigValue>
-<TUInfo TUCode="01" Participation="2">
<Name>АЛТАЙСКИЙ КРАЙ </Name>
-<CustomerInfo StoppageMode="1" RegistrationMode="1" RegistrationDate="2010-08-27" OURBIC="040173001" OCBIC="040147000" MemberType="1" ExecPayeePayts="2" BIC="040147781">
<Name>ОАО "НАРОДНЫЙ ЗЕМЕЛЬНО-ПРОМЫШЛЕННЫЙ БАНК" </Name>
</CustomerInfo>
+<CustomerInfo RegistrationMode="1" RegistrationDate="2007-12-24" OURBIC="040173001" MemberType="3" DispatchPayeePayts="1">
+<CustomerInfo StoppageMode="1" RegistrationMode="1" RegistrationDate="2009-01-13" OURBIC="040173001" OCBIC="040173001" MemberType="1" UIS="0173001001">
+<CustomerInfo StoppageMode="1" RegistrationMode="1" RegistrationDate="2008-10-22" OURBIC="040173001" OCBIC="040173001" MemberType="1" ExecPayeePayts="1" BIC="040173604">
+<CustomerInfo StoppageMode="1" RegistrationMode="1" RegistrationDate="2013-11-21" OURBIC="040173001" OCBIC="040173001" MemberType="1" ExecPayeePayts="1" BIC="040173703">
+<CustomerInfo StoppageMode="1" RegistrationMode="1" RegistrationDate="2010-08-27" OURBIC="040173001" OCBIC="040173001" MemberType="1" ExecPayeePayts="1" BIC="040173707">
+<CustomerInfo StoppageMode="1" RegistrationMode="1" RegistrationDate="2011-04-26" OURBIC="040173001" OCBIC="040173001" MemberType="1" ExecPayeePayts="1" BIC="040173713">
+<CustomerInfo StoppageMode="1" RegistrationMode="1" RegistrationDate="2010-08-27" OURBIC="040173001" OCBIC="040173001" MemberType="1" ExecPayeePayts="1" BIC="040173720">
+<CustomerInfo StoppageMode="1" RegistrationMode="1" RegistrationDate="2011-08-10" OURBIC="040173001" OCBIC="040173001" MemberType="1" ExecPayeePayts="1" BIC="040173725">
+<CustomerInfo StoppageMode="1" RegistrationMode="1" RegistrationDate="2010-08-27" OURBIC="040173001" OCBIC="040173001" MemberType="1" ExecPayeePayts="1" BIC="040173733">
+<CustomerInfo StoppageMode="1" RegistrationMode="1" RegistrationDate="2010-08-27" OURBIC="040173001" OCBIC="040173001" MemberType="1" ExecPayeePayts="1" BIC="040173735">
+<CustomerInfo StoppageMode="1" RegistrationMode="1" RegistrationDate="2010-08-27" OURBIC="040173001" OCBIC="040173001" MemberType="1" ExecPayeePayts="1" BIC="040173739">
+<CustomerInfo StoppageMode="1" RegistrationMode="1" RegistrationDate="2010-01-14" OURBIC="040173001" OCBIC="040173001" MemberType="1" ExecPayeePayts="1" BIC="040173743">
+<CustomerInfo StoppageMode="1" RegistrationMode="1" RegistrationDate="2010-08-27" OURBIC="040173001" OCBIC="040173001" MemberType="1" ExecPayeePayts="1" BIC="040173745">
+<CustomerInfo StoppageMode="1" RegistrationMode="1" RegistrationDate="2010-08-27" OURBIC="040173001" OCBIC="040173001" MemberType="1" ExecPayeePayts="1" BIC="040173749">
+<CustomerInfo StoppageMode="1" RegistrationMode="1" RegistrationDate="2010-02-04" OURBIC="040173001" OCBIC="040173001" MemberType="2" ExecPayeePayts="1" BIC="040173753" DispatchPayeePayts="2" ParentBIC="044525823">
+<CustomerInfo StoppageMode="1" RegistrationMode="1" RegistrationDate="2010-03-04" OURBIC="040173001" OCBIC="040173001" MemberType="1" ExecPayeePayts="1" BIC="040173754">MemberType="1" ExecPayeePayts="1" BIC="040173766">
+<CustomerInfo StoppageMode="1" RegistrationMode="1" RegistrationDate="2010-08-27" OURBIC="040173001" OCBIC="040173001" 
+<CustomerInfo StoppageMode="1" RegistrationMode="1" RegistrationDate="2010-08-27" OURBIC="040173001" OCBIC="040173001" MemberType="1" ExecPayeePayts="1" BIC="040173757">
+<CustomerInfo StoppageMode="1" RegistrationMode="1" RegistrationDate="2010-08-27" OURBIC="040173001" OCBIC="040173001" MemberType="1" ExecPayeePayts="1" BIC="040173771">
</TUInfo>
</ED374>


Данные в таблице вот в таком примерно виде хочется выгружать в excel
EDDateTUCodeParticipationStoppageModeRegistrationModeRegistrationDateOURBICOCBICMemberTypeExecPayeePaytsBICName08.01.2014121127.08.201040173001401470001240147781НАРОДНЫЙ ЗЕМЕЛЬНО-ПРОМЫШЛЕННЫЙ БАНК08.01.2014121113.01.2009401730014017300112……

Написал код, но не хочет работать. Где я не так делаю?
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
Private Sub CommandButton1_Click()
Dim fileToOpen As Variant
Dim XMLDoc As New DOMDocument
Dim xmlE As IXMLDOMElement
Dim XMLNode As IXMLDOMNode
Dim o As Object

fileToOpen = Application.GetOpenFilename
XMLDoc.Load fileToOpen

For Each xmlE In XMLDoc.DocumentElement("ED374/TUInfo/CustomerInfo")
    Debug.Print xmlE.getAttribute("name")
Next
End Sub


Заранее спасибо!
...
Рейтинг: 0 / 0
работа с файлами xml
    #38777138
PlanB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в дополнение, интересуют только поля с указанными BIC (их нет в ряде случаев). Как организовать проверку наличия такой записи? мусора нам не надо
...
Рейтинг: 0 / 0
работа с файлами xml
    #38777269
sergeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
такой цикл кажется даст что нужно
Код: vbnet
1.
2.
3.
4.
5.
For Each xmlE In XMLDoc.getElementsByTagName("CustomerInfo")
  On Error Resume Next
  Debug.Print xmlE.getAttribute("BIC")
  Debug.Print xmlE.selectSingleNode("Name").Text
Next
...
Рейтинг: 0 / 0
работа с файлами xml
    #38777299
PlanB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sergeyvgтакой цикл кажется даст что нужно[/src]
спасибо большое! сори, чет я не догадался =)))))
...
Рейтинг: 0 / 0
работа с файлами xml
    #38777324
PlanB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sergeyvg, а как быть с EDDate? ее бы хотелось дуюлировать каждый раз в первом столбце (таких доков тьма)
...
Рейтинг: 0 / 0
работа с файлами xml
    #38777599
sergeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
где-то так. я то не особо силен в xml, может можно и короче
Код: vbnet
1.
2.
3.
Set XMLNode = XMLDoc.documentElement
Set xmlE = XMLNode.selectSingleNode("/ED374")
Debug.Print xmlE.getAttribute("EDDate")
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / работа с файлами xml
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]