مشاكل تكرار XML (Android/Java)

لتعيين المشهد ، أعمل حاليًا على محول xml لنظام التشغيل Android والذي سيقرأ في ملفات xml التي تم إعطائها وتحليلها في قاعدة بيانات. ظننت أن هذا كان إلى الأسفل حتى ظهرت لي أن العقد في ملف xml يمكن أن يتغير من ملف إلى ملف ، ولذا فأنا بحاجة إلى بناء آلية للتعامل مع المتغيرات المفقودة.

وكان الحل الأكثر وضوحًا لذلك هو عبارة switch() ، ولكن ذلك لن يعمل مع السلاسل ، لذلك بدأت في إنشاء بنية if-then-else . كانت الفكرة هي أنها ستتحقق من اسم العقدة وأن تتدبر ما يجب فعله به بناءً على ذلك. بسيط ، أليس كذلك؟

المشكلة ، لا أستطيع أن يبدو أن سحب اسم العقد أحتاج من ملف xml بغض النظر عن ما أفعله. هيكل ملف xml هو أدناه:


    
        BBB2791276393
        KN05EAP
        5
    

ما أريد أن أكون قادراً على مقارنته هو أسماء علامات مثل "VIN" أو "RegNo" ، لكن لا يمكنني معرفة طريقة لسحبها. ETA: بما أنني لم أوضح ذلك ، فإن العقد التابعة لـ Detail تتغير بين ملفات xml ، ولا بد لي من التعامل معها عندما تأتي ...

I'm using a DOM parser, and pulling out a NodeList based on . NodeList.item(0) gives me the node, but if I then try and break that down (with getChildNodes() for example), I can't get the tag names for or . In fact, I can't seem to get any kind of reference for them that I could use to determine what node it is based on the original name.

أي شخص حصل على أي أفكار؟

0
أقترح عليك استخدام محلل SAX الأكثر فعالية والموصى به. استخدم هذا الرابط ، قد يساعدك على mobile .tutsplus.com/دروس/الروبوت/و hellip؛
وأضاف المؤلف vineet, مصدر

2 إجابة

حسنًا .. لقد أوضحت أنه يمكنك الوصول إلى العلامة التفصيلية ... حاول القيام بذلك بهذه الطريقة ...

// Getting VIN of Detail
 if (element.getElementsByTagName("VIN").getLength() > 0) {
        childNode = element.getElementsByTagName("VIN").item(0); //Get all the elements one by one
        String VIN = childNode.getFirstChild().getNodeValue();

    }

يمكنك أن تفعل ذلك لجميع الأطفال من التفاصيل ... نأمل أن يساعدك هذا .. !!!

0
وأضاف
سيتم تغيير علامات الأطفال من التفاصيل بين ملفات XML. وبالتالي فإن الاستيلاء على قائمة بكل منها ليس هو الحل المثالي. إنه الإختراق الذي وضعته معًا (مع NodeList! إمساك فارغ) ، لكنه ليس أنيقًا تمامًا.
وأضاف المؤلف Yoda, مصدر
نعم ، من شأنه أن يكون حلا مثاليا ... لقد افترضت أن العقد هو نفسه طوال الوقت ...
وأضاف المؤلف Usama Sarwar, مصدر

أسماء العقد الطفل:

Element elem = (Element)nodeList.item(0);

        Node child;
        if( elem != null){
                if (elem.hasChildNodes()){
                   for( child = elem.getFirstChild(); child != null; child = child.getNextSibling() ){
                       if( child.getNodeType() == Node.ELEMENT_NODE  ){
                           Log.i("fff", child.getNodeName());
                       }
                }
            }
        }

للحصول على قيمة العقدة ، استخدم طريقة getValue() هذه (نسيت أين وجدت هذا الحل للأسف لا يمكنني إعطاء الفضل للشخص الذي قام بذلك):

public String getValue(Element item, String str) {
        NodeList n = item.getElementsByTagName(str);
        return this.getElementValue(n.item(0));
    }

public final String getElementValue( Node elem ) {
        Node child;
        if( elem != null){
            if (elem.hasChildNodes()){
                for( child = elem.getFirstChild(); child != null; child = child.getNextSibling() ){
                    if( child.getNodeType() == Node.TEXT_NODE  ){
                        //child.getNodeName();
                        return child.getNodeValue();
                    }
                }
            }
        }
        return null;
    } 
0
وأضاف
getNodeName() تم إرجاعها تمامًا عند تجربتها.
وأضاف المؤلف Yoda, مصدر
نعم ، نعم ، لا ..؟
وأضاف المؤلف Yoda, مصدر
وأضاف المؤلف Arie, مصدر
Android Sudan Community
Android Sudan Community
900 مشارك

كل اقتراحاتكم تتم مشاركتها هنا رابط القناة لتنزيل البرامج والالعاب من هنا @android_sudan تنبيه : القروب غير مختص إطلاقا بي الانترنت المجاني مثل ملفات الحاقن وماشابه يمنع منعا باتا نشر اي ملفات او برامج او اي شيء يتعلق بالانترنت المجان