Парсинг файла XML
| Правила | Регистрация | Пользователи | Сообщения за день |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Парсинг файла XML

Парсинг файла XML

Ответ
Поиск в этой теме
Непрочитано 11.08.2010, 22:46 #1
Парсинг файла XML
Элис
 
Регистрация: 30.06.2010
Сообщений: 11

Подскажите пожалуйста!При открытии файла dwg, мне нужно открыть файл ХМL и считать из него данные для заполнения штама, готовый штамп я вставляю как блок на лист. в этом блоке созданы поля. причем для пользователя это должно быть прозрачно. Чем считывать файл и как данные впихнуть в блок. Спасибо
Просмотров: 4409
 
Непрочитано 11.08.2010, 23:21
#2
Дима_

Продуман
 
Регистрация: 22.02.2007
Питер
Сообщений: 2,839


Тут что называется что ближе, можно писать на встроенных языках - с подстановкой полей в блоках и установкой реакторах попроще будет, но придеться поискать autolisp/vb xml-parser (или написать самому, да здесь выложить - наверное спасибо скажут). Либо писать на чем угодно другом поддерживающим xml (практически у каждого современного языка есть готовая xml библиотека), а с блоками работать - например через com. В чем лучше разбираетесь на том и пишите - разницы особой я лично не вижу.
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Непрочитано 11.08.2010, 23:33
#3
hwd

C, C++, C#
 
Регистрация: 07.10.2009
С-Пб.
Сообщений: 2,762
Отправить сообщение для hwd с помощью Skype™


Цитата:
Сообщение от Элис Посмотреть сообщение
Подскажите пожалуйста!При открытии файла dwg, мне нужно открыть файл ХМL и считать из него данные для заполнения штама, готовый штамп я вставляю как блок на лист. в этом блоке созданы поля. причем для пользователя это должно быть прозрачно. Чем считывать файл и как данные впихнуть в блок. Спасибо
При таких вопросах следует указывать язык программирования, который используете.

P.S. Если пишете на .Net, то однозначно следует читать про технологию LINQ to XML - свободно разберётесь за день. У меня на сайте полно примеров кода, в которых я работаю с XML именно посредством этой технологии.
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:
hwd вне форума  
 
Автор темы   Непрочитано 12.08.2010, 09:59
#4
Элис


 
Регистрация: 30.06.2010
Сообщений: 11


Пишу в VBA
Элис вне форума  
 
Непрочитано 12.08.2010, 10:05
#5
hwd

C, C++, C#
 
Регистрация: 07.10.2009
С-Пб.
Сообщений: 2,762
Отправить сообщение для hwd с помощью Skype™


Цитата:
Сообщение от Элис Посмотреть сообщение
Пишу в VBA
Из Google...

P.S. Если VBA используется для существующих на сей день версий AutoCAD, то страшного в этом ничего нет, однако если планируется использовать библиотеку и в последующих выпусках САПР, то следует учитывать это.
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:

Последний раз редактировалось hwd, 12.08.2010 в 10:12.
hwd вне форума  
 
Непрочитано 13.08.2010, 02:21
#6
gomer

строю, ломаю
 
Регистрация: 03.04.2008
Украина
Сообщений: 5,515


на theswamp.org был кажется пример на lisp
gomer вне форума  
 
Непрочитано 13.08.2010, 08:07
#7
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,408


Там создается СОМ-объект для MSXML.DOMDocument. Лично я создавал для MSXML2.DOMDocument.3.0 - он оказался более устойчивым...
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 13.08.2010, 09:26
#8
Элис


 
Регистрация: 30.06.2010
Сообщений: 11


Код:
[Выделить все]
Public objNode As MSXML2.IXMLDOMNode
Public objXMLDOM As New MSXML2.DOMDocument26
Public objNodes As IXMLDOMNodeList
Public objBookNode As IXMLDOMNode



Dim i As Integer
  Set objNodes = objXMLDOM.SelectNodes("DatePSD")
         For Each objBookNode In objNodes
            'If objBookNode.SelectNodes("Lists").Length <> 0 Then
                Set Lists = objBookNode.SelectNodes("Lists")
                    For Each List In Lists
                       Set temp2 = List.SelectNodes("Count")
                      
                           For Each ListN In temp2
                                Set temp3 = ListN.SelectNodes("Count")  \\\\  вылетает

                    Next
                              Next
и сам xml

Код:
[Выделить все]
  <?xml version="1.0" encoding="utf-8" ?> 
- <DatePSD>
- <Lists Count="1">
- <List Name="Лист1" Format="А2">
- <Stamp>
- <Development>
- <RowStampOne>
  <ColumnDesc>Разраб.</ColumnDesc> 
  <ColumnInitials>Гирда</ColumnInitials> 
  <ColumnSign>http://tmn-ntc-pir/images/sign1.jpg</ColumnSign> 
  <ColumnDate>05.10</ColumnDate> 
  </RowStampOne>
- <RowStampTwo>
  <ColumnDesc>Пров.</ColumnDesc> 
  <ColumnInitials>Бурякова</ColumnInitials> 
  <ColumnSign>http://tmn-ntc-pir/images/sign2.jpg</ColumnSign> 
  <ColumnDate>05.10</ColumnDate> 
  </RowStampTwo>
- <RowStampThree>
  <ColumnDesc>Гл.спец</ColumnDesc> 
  <ColumnInitials>Генералова</ColumnInitials> 
  <ColumnSign>http://tmn-ntc-pir/images/sign3.jpg</ColumnSign> 
  <ColumnDate>05.10</ColumnDate> 
  </RowStampThree>
- <RowStampFour>
  <ColumnDesc>Н.контроль</ColumnDesc> 
  <ColumnInitials>Генералова</ColumnInitials> 
  <ColumnSign>http://tmn-ntc-pir/images/sign3.jpg</ColumnSign> 
  <ColumnDate>05.10</ColumnDate> 
  </RowStampFour>
- <RowStampFive>
  <ColumnDesc /> 
  <ColumnInitials /> 
  <ColumnSign /> 
  <ColumnDate /> 
  </RowStampFive>
- <RowStampSix>
  <ColumnDesc /> 
  <ColumnInitials /> 
  <ColumnSign /> 
  <ColumnDate /> 
  </RowStampSix>
  </Development>
  </Stamp>
- <PDF>
  <Name>file1.pdf</Name> 
  <Link>http://tmn-ntc-pir/file1.pdf</Link> 
  </PDF>
  </List>
  </Lists>
  </DatePSD>

Последний раз редактировалось Кулик Алексей aka kpblc, 13.08.2010 в 09:34.
Элис вне форума  
 
Непрочитано 13.08.2010, 09:34
#9
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,408


Про тэги не забывай
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 13.08.2010, 12:01
#10
ShaggyDoc

Thượng Tá Quân Đội Nhân Dân Việt Nam
 
Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,372


Работать с XML, конечно, можно из любой среды программирования. Или встроенными средствами, или дополнительными библиотеками. Но работать надо уметь. Да и сам XML должен быть правильным ("valid" и "well-formatted"), иначе парсер может споткнуться. Да и с кодировками могут быть проблемы...

Парсеров для XML много есть. MSXML самый распространенный, но и самый "тормозной" - потому другие и пишут. Для небольшого объема (сотни строк) и MSXML сойдет, а для больших данных скорость уже проблемой становится. Не всегда DOM-модель нужна, а на ней и теряется скорость.

В мелком частном случае с данными для форматки я бы не советовал вообще хранить данные в XML - с этим прекрасно справится INI-файл, где все просто, надежно и прекрасно читается-пишется функциями API.

Преимущества XML здесь не видны, а главный недостаток налицо - автор ветки не знает, как с ним работать.
ShaggyDoc вне форума  
 
Автор темы   Непрочитано 13.08.2010, 12:31
#11
Элис


 
Регистрация: 30.06.2010
Сообщений: 11


согласна. но сказали формат XML так что деваться некуда просто срочно нужно сделать вот и начались душетерзания

запуталась во вложения
Элис вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Парсинг файла XML



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нужна функция импорта блока из файла Krieger Программирование 20 18.01.2017 07:19
Фатальная ошибка при попытке мониторинга изменения файла настроек. hwd Программирование 7 24.03.2010 23:45
Файл адаптации предприятия Shoorup Программирование 8 14.03.2008 01:28
структурированный список Holon Программирование 22 11.09.2007 14:09
Частичное открытие файла - не активно при открытии файла ADik AutoCAD 4 22.06.2006 07:35