Datagrampacket to xml.
Вопрос
Я пытаюсь разобрать сообщение о датчике SOAP с XMLPullParser. Я получаю это через UDP Multicast. Я использую следующий код, чтобы получить его.
byte[] buf = new byte[1900];
DatagramPacket packet = new DatagramPacket(buf, buf.length);
mSocket.receive(packet);
// Damn ugly....
String data = new String(packet.getData())
Если я преобразую байт [], чтобы строка парсер не съел его ... Есть ли более элегантные способы сделать это?
Когда я печатаю XML (как строку), я получаю неиспользуемые байты в конце строки:
</s12:Envelope>À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?À?
Решение
Во-первых, я думаю, что вы захотите построить строку следующим образом:
String data = new String(packet.getData(),
packet.getOffset(),
packet.getLength());
Что касается туда лучше. Aiui не на самом деле, хотя там может быть третья сторона API, который облегчает заполнение / опорожнение дейтаграммов, так как вся байтовая упаковка очень плохо.
Не связан с StackOverflow