2010-12-09 4 views
0

Я разрабатываю приложение сокета, и моему приложению необходимо получить файл xml через сокет. Размер получаемых xml-файлов варьируется от 1k до 100k. Теперь я собираюсь сначала сохранить данные, которые я получил во временный файл, а затем передать его в синтаксический анализатор xml. Я не уверен, что это правильный способ сделать это.Обработка полученных данных из сокета

Другой вопрос, хочу ли я сделать то, что упоминалось выше, должен ли я передать файловый объект или путь к файлу в XML-парсер?

Спасибо заранее,

С уважением

ответ

2

Просто отправьте его прямо в парсер. Это то, что делают браузеры. Добавление временного файла требует времени и пространства без фактической выгоды.

+0

Спасибо EJP. Если InputStream из сокета содержит некоторые предшествующие данные перед данными XML, можно ли пропустить эти данные, выполнив некоторые вызовы метода read() перед передачей его в парсер? – 2010-12-09 07:14:03

0

Как вы думаете, он будет работать, чтобы положить BufferedReader вокруг любой входной поток у вас есть? Он не помещал его во временный файл, но он позволял вам висеть на этих данных. Вы можете установить любой необходимый BufferedReader размер.

Вы пишете свой парсер XML? Если вы этого не сделали, что он примет в качестве параметра? Если вы это напишете, вы спрашиваете об эффективности. То есть, какой объект, путь или файл, должен ли ваш синтаксический анализатор просить быть наиболее эффективным?

+0

Hi Raven, я не пишу свой собственный синтаксический анализатор XML, и API, который я использую, использует InputStream в качестве параметра для синтаксического анализа. – 2010-12-09 06:52:51

0

Вам не нужно сохранять данные из сокета в любой файл. Просто прочитайте весь DataInputStream в массив байтов, и вы сможете делать все, что вам нужно. Например. при необходимости создайте String с входом xml для подачи анализатора. (Я принимаю tcp сокеты).
Если есть предыдущие данные, вы пропускаете их, чтобы передать фактические данные xml в синтаксический анализатор.

Смежные вопросы