Я новичок в разборе XML. Я получу XML-строку, как показано ниже.Cant Parse XML в android
<?xml version="1.0" encoding="UTF-8"?>
<PrintLetterBarcodeData uid="746384773" name="name" gender="F" yob="1994" co="Father's name" house="6-123123" street="street name" vtc="Kakumanu" po="Kakumanu" dist="Goodallor" state="Andhra Pradesh" pc="123456"/>
Мне нужно разобрать это. Из того, что я видел, в Google. Формат XML отличается от того, что у меня есть здесь, которое приведено ниже. формат XML:
<?xml version="1.0"?>
<records>
<employee>
<name>Sairamkrishna</name>
<surname>Mammahe</surname>
<salary>50000</salary>
</employee>
<employee>
<name>Gopal </name>
<surname>Varma</surname>
<salary>60000</salary>
</employee>
<employee>
<name>Raja</name>
<surname>Hr</surname>
<salary>70000</salary>
</employee>
</records>
И я не могу реализовать обычные коды, доступные для разбора XML-строки. Я не знаю, что не так. Это обычный формат XML. Пожалуйста помоги. Заранее спасибо.
Update: Мой синтаксический код, как показано ниже:
// parsing QR XML
private String getAadharNumber(String xml)
throws XmlPullParserException, ParserConfigurationException, SAXException, IOException {
String value = null;
XmlPullParserFactory xmlFactoryObject = XmlPullParserFactory.newInstance();
XmlPullParser myparser = xmlFactoryObject.newPullParser();
InputStream stream = new ByteArrayInputStream(xml.getBytes("UTF-8"));
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
Document doc = dBuilder.parse(stream);
Element element = doc.getDocumentElement();
element.normalize();
NodeList nodes = element.getElementsByTagName("PrintLetterBarcodeData");
Node node = nodes.item(0);
if (node.getNodeType() == Node.ELEMENT_NODE) {
Element elements = (Element) node;
value = elements.getAttribute("uid");
return value;
}
return null;
}
И я получаю эту ошибку :
FATAL EXCEPTION: main Process: in.co.federalbank.mpassbook, PID: 15662
java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=114910, result=-1, data=Intent { act=com.google.zxing.client.android.SCAN flg=0x80000 (has extras) }} to activity {in.co.federalbank.mpassbook/in.co.federalbank.mpassbook.CreateEKYCAccountActivity}: java.lang.NullPointerException: Attempt to invoke interface method 'short org.w3c.dom.Node.getNodeType()' on a null object reference
at android.app.ActivityThread.deliverResults(ActivityThread.java:3779)
at android.app.ActivityThread.handleSendResult(ActivityThread.java:3822)
at android.app.ActivityThread.access$1400(ActivityThread.java:154)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1429)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:152)
at android.app.ActivityThread.main(ActivityThread.java:5497)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
Caused by: java.lang.NullPointerException: Attempt to invoke interface method 'short org.w3c.dom.Node.getNodeType()' on a null object reference
at in.co.fragment.registration.ekyc.GetAadharDetailsFragment.getAadharNumber(GetAadharDetailsFragment.java:137)
at in.co.fragment.registration.ekyc.GetAadharDetailsFragment.onResult(GetAadharDetailsFragment.java:110)
at in.co.fragment.registration.ScannerFragment.onActivityResult(ScannerFragment.java:150)
at android.support.v4.app.FragmentActivity.onActivityResult(FragmentActivity.java:153)
at android.app.Activity.dispatchActivityResult(Activity.java:6490)
at android.app.ActivityThread.deliverResults(ActivityThread.java:3775)
at android.app.ActivityThread.handleSendResult(ActivityThread.java:3822)
at android.app.ActivityThread.access$1400(ActivityThread.java:154)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1429)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:152)
at android.app.ActivityThread.main(ActivityThread.java:5497)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
Вы можете поделиться кодом парсинга .... XML является действительным ... –
Оба фрагмента кода вы вывешенным действительна XML. У ваших есть данные, хранящиеся как атрибуты, а другие - данные, хранящиеся во вложенных тегах. Было бы более полезно, если бы вы разместили фрагмент кода анализа, и мы могли бы помочь вам определить, что не так. – Karakuri
@Nabeel K проверить эту ссылку он может вам помочь: http://stackoverflow.com/questions/12119356/how-to-get-value-of-node-list-in-xml-dom-parser – Piyush