Datagrampacket إلى XML
سؤال
أنا أحاول تحليل رسالة probematch الصابون مع xmlpullparser. أتلقى هذا عبر البث المتعدد UDP. يمكنني استخدام الرمز التالي لتلقيه.
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 ليس حقًا ، على الرغم من أنه قد يكون هناك واجهة برمجة تطبيقات طرف ثالث تجعل ملء/إفراغ بيانات البيانات أسهل قليلاً ، حيث أن كل عبوة البايت هي بشكل كبير.
لا تنتمي إلى StackOverflow