|
|
|
Читать xml-файл через сокет
|
|||
|---|---|---|---|
|
#18+
Нужно получить xml-файл через сокет, распарсить его и послать данные дальше по цепочке. Вторая задача - получить данные из цепочки, сформировать xml-файл и передать его в сокет. Опыта у меня не много, но дурацких вопросов много. До этого я только из доставал данные файла. Я правильно понимаю отличие от того, что я делал : надо взять входной поток из сокета, а не из файла и передать в парсер? 2)В саксе START_ELEMENT - там начало любого тега - будь он даже внутри других тегов или я не правильно понимаю? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.05.2013, 10:15:51 |
|
||
|
Читать xml-файл через сокет
|
|||
|---|---|---|---|
|
#18+
else12распарсить его Начни с парсера, т.к. это - БЛ. Выбери парсер....посмотри его вход... а потом уже чисто технические вещи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.05.2013, 10:52:26 |
|
||
|
Читать xml-файл через сокет
|
|||
|---|---|---|---|
|
#18+
Если XML маленький (до 50-100Кб)- возьмите любой удобный DOM парсер - JDOM, Dom4j. Если XML достаточно большой - читайте про XML сериализацию XStream, JAXB. Голые JSE SAX и DOM API достаточно не удобные. Лучше тогда StAX. SAX вообще удобный только на чтение, для него есть клевая обертка Digester, но так как вам нужно не только парсить XML, но и формировать, вам в эту сторону пока можно не смотреть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.05.2013, 11:21:25 |
|
||
|
Читать xml-файл через сокет
|
|||
|---|---|---|---|
|
#18+
Petro123else12распарсить его Начни с парсера, т.к. это - БЛ. Выбери парсер....посмотри его вход... а потом уже чисто технические вещи. Я парсер уже частично написал - на стаксе. Потому что не понятно - если идет поток данных, то как его сразу в дом отправить. Но там есть вложенные теги - и у меня вопрос - отследить все их в START_ELEMENT я могу? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.05.2013, 11:53:15 |
|
||
|
Читать xml-файл через сокет
|
|||
|---|---|---|---|
|
#18+
else12Я парсер уже частично написал - на стаксе. Потому что не понятно - если идет поток данных, то как его сразу в дом отправить. в jaxb нет ничего проще, даже в дом направлять не надо, сразу на выходе готовые данные Код: java 1. 2. 3. И в обратную сторону не сложнее. Если заранее известна структура xml, и документы имеют вменяемый размер, зачем писать парсер, все уже готово. А в саксе - да, START_ELEMENT будет вызываться на каждом элементе, и при рекурсивном заходе внутрь - тоже ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.05.2013, 12:14:51 |
|
||
|
Читать xml-файл через сокет
|
|||
|---|---|---|---|
|
#18+
ivanraelse12Я парсер уже частично написал - на стаксе. Потому что не понятно - если идет поток данных, то как его сразу в дом отправить. в jaxb нет ничего проще, даже в дом направлять не надо, сразу на выходе готовые данные Код: java 1. 2. 3. И в обратную сторону не сложнее. Если заранее известна структура xml, и документы имеют вменяемый размер, зачем писать парсер, все уже готово. А в саксе - да, START_ELEMENT будет вызываться на каждом элементе, и при рекурсивном заходе внутрь - тоже А есть чего почитать про jaxb на русском языке? Не порекомендуете? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.05.2013, 12:22:42 |
|
||
|
Читать xml-файл через сокет
|
|||
|---|---|---|---|
|
#18+
else12Потому что не понятно - если идет поток данных, то как его сразу в дом отправить вы модульно делаете? Или конвейер глазной клиники Фёдорова? Получите стрим-поток-файл весь, а потом парсите. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.05.2013, 12:59:15 |
|
||
|
Читать xml-файл через сокет
|
|||
|---|---|---|---|
|
#18+
Petro123else12Потому что не понятно - если идет поток данных, то как его сразу в дом отправить вы модульно делаете? Или конвейер глазной клиники Фёдорова? Получите стрим-поток-файл весь, а потом парсите. Конвейер глазной клиники. Получаю команду в сокете(от меня при этом ждут быстрого ответа ), парсю, трансформирую в другой протокол, передаю данные по цепочке через другой сокет, получаю данные от цепочки, парсю, конвертирую, передаю xml-ответ. Иногда все команды бегут в противоположную сторону. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.05.2013, 13:07:05 |
|
||
|
Читать xml-файл через сокет
|
|||
|---|---|---|---|
|
#18+
else12Конвейер глазной клиники. Получаю команду в сокете(от меня при этом ждут быстрого ответа ), парсю, трансформирую в другой протокол, передаю данные по цепочке через другой сокет, получаю данные от цепочки, парсю, конвертирую, передаю xml-ответ. Иногда все команды бегут в противоположную сторону. Но это всё отдельные XML команды, а не непрерывный поток XML. XML вообще по задумке не может быть непрерывным потоком. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.05.2013, 13:10:33 |
|
||
|
Читать xml-файл через сокет
|
|||
|---|---|---|---|
|
#18+
Blazkowiczelse12Конвейер глазной клиники. Получаю команду в сокете(от меня при этом ждут быстрого ответа ), парсю, трансформирую в другой протокол, передаю данные по цепочке через другой сокет, получаю данные от цепочки, парсю, конвертирую, передаю xml-ответ. Иногда все команды бегут в противоположную сторону. Но это всё отдельные XML команды, а не непрерывный поток XML. XML вообще по задумке не может быть непрерывным потоком. Ну да. Просто насчет "получения данных, сохранения в файл, открытия файла" это что-то лишнее в моем случае. Или что такое "получить ФАЙЛ из сокета"? Я так понимаю, что мне надо открыть поток на чтение данных и передать его в парсер. Стакс - как я думал - вполне подходит под такую задачу. Я ошибался, все нужно делать не так? А как? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.05.2013, 13:24:03 |
|
||
|
Читать xml-файл через сокет
|
|||
|---|---|---|---|
|
#18+
BlazkowiczНо это всё отдельные XML команды, а не непрерывный поток XML. XML вообще по задумке не может быть непрерывным потоком. +1 термины: - открыть сокет и получать поток-байты пока не кончится. Нижний уровень. - Верхний уровень - получили буффер\поток как единое целое XML формата. IMHO ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.05.2013, 13:31:09 |
|
||
|
Читать xml-файл через сокет
|
|||
|---|---|---|---|
|
#18+
else12, у тебя был термин - файл. Вот и складируй файлы в temp. А парсер их хабирает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.05.2013, 13:35:26 |
|
||
|
Читать xml-файл через сокет
|
|||
|---|---|---|---|
|
#18+
Petro123else12, у тебя был термин - файл. Вот и складируй файлы в temp. А парсер их хабирает. Это я просто так выразился о том, что я раньше делал. А сейчас мне нужно принять данные из сокета и как можно быстрее их обработать. Я это себе представляю так, что я получаю данные из сокета во входной поток и передаю этот поток парсеру. Со стаксом я знаком, поэтому и использовал его. Но как-то сомневаюсь - а правильно ли я сделал или надо как-то по-другому? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.05.2013, 15:16:08 |
|
||
|
Читать xml-файл через сокет
|
|||
|---|---|---|---|
|
#18+
else12, вот и разберись что ты принимаешь из сокета: файлы, потки байтов, склееные XML'ы и т.д. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.05.2013, 15:57:40 |
|
||
|
Читать xml-файл через сокет
|
|||
|---|---|---|---|
|
#18+
а вообще, жать в zip надо перед передачей ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.05.2013, 15:58:54 |
|
||
|
Читать xml-файл через сокет
|
|||
|---|---|---|---|
|
#18+
там был класс Transformer который умеет парсить из/в inputstream. глядите документацию по классам раелизующим javax.xml.transform.Source ну и вабще этот пакет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.05.2013, 16:52:09 |
|
||
|
Читать xml-файл через сокет
|
|||
|---|---|---|---|
|
#18+
chabapok, Не вводите в заблуждение, javax.xml.transform относится к XSLT, возможно он и пригодится чтобы трансформировать xml во что-то другое, но он не парсит xml. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.05.2013, 17:54:03 |
|
||
|
Читать xml-файл через сокет
|
|||
|---|---|---|---|
|
#18+
да ничего я не путаю, пускай тс погуглит нормально. в гугле это было, на первых страницах. Там от Source наследуется конкретный класс - или строковый или потоковый источник, принципиальной разницы нет. И во что этот xml трансформировать тоже задается. кстати вот Код: java 1. 2. 3. 4. 5. Собсно, тс-у надо смотреть на классы которые реализуют интерфейсы Source и Result, или в своем классе его реализовать. То есть в данном случае транформер перегоняет из dom в файловый поток, например. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.06.2013, 18:10:52 |
|
||
|
|

start [/forum/topic.php?fid=59&fpage=226&tid=2129243]: |
0ms |
get settings: |
22ms |
get forum list: |
40ms |
check forum access: |
8ms |
check topic access: |
8ms |
track hit: |
67ms |
get topic data: |
23ms |
get forum data: |
5ms |
get page messages: |
86ms |
get tp. blocked users: |
2ms |
| others: | 310ms |
| total: | 571ms |

| 0 / 0 |
