كيفية التحويل من التحليل مع دوم إلى تحليل مع ساكس

StackOverflow https://stackoverflow.com/questions/1137455

  •  16-09-2019
  •  | 
  •  

سؤال

أنا تحليل مستند XML في هيكلي باستخدام DOM، ولكن في مكان آخر سؤال لقد نصحت باستخدام SAX، كيف يمكنني تحويل ما يلي:

public static DomTree<String> createTreeInstance(String path) 
  throws ParserConfigurationException, SAXException, IOException {
    DocumentBuilderFactory docBuilderFactory = DocumentBuilderFactory.newInstance();
    DocumentBuilder db = docBuilderFactory.newDocumentBuilder();
    File f = new File(path);
    Document doc = db.parse(f);       
    Node node = doc.getDocumentElement(); 
    DomTree<String> tree = new DomTree<String>(node);
    return tree;
}

هنا هو منشئ دومتري الخاص بي:

    /**
     * Recursively builds a tree structure from a DOM object.
     * @param root
     */
    public DomTree(Node root){      
        node = root;        
        NodeList children = root.getChildNodes();
        DomTree<String> child = null;
        for(int i = 0; i < children.getLength(); i++){  
            child = new DomTree<String>(children.item(i));
            if (children.item(i).getNodeType() != Node.TEXT_NODE){
                super.children.add(child);
            }
        }
    }
هل كانت مفيدة؟

المحلول

برمجة ضد SAX مختلفة تماما عن البرمجة ضد DOM - SAX هي نموذج دفع، DOM هو نموذج سحب. تحويل التعليمات البرمجية الخاصة بك من واحد إلى آخر مهمة غير تافهة للغاية.

بالنظر إلى وضعك، أوصي باستخدام STAX بدلا من SAX. STAX هو API محلل نموذج السحب، ولكن لديه العديد من نفس مزايا نهج ساكس (مثل استخدام الذاكرة والأداء).

يأتي Stax مع Java 6، ولكن إذا كنت ترغب في استخدامه مع Java 5، فأنت بحاجة إلى تنزيل معالج Stax (على سبيل المثال Woodstox.). يحتوي موقع Woodstox على الكثير من الأمثلة لكي تنظر إليه.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top