java مشاريع أفضل طريقة لتحليل مختلف مستندات شمل المخصصة في جافا




مشاريع الفيجوال بيسك جاهزة (5)

استخدم مكتبة dom4j

أولا قراءة الوثيقة

import java.net.URL;

import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.io.SAXReader;

public class Foo {

    public Document parse(URL url) throws DocumentException {
        SAXReader reader = new SAXReader();
        Document document = reader.read(url);
        return document;
    }
}

ثم استخدم زباث للوصول إلى القيم التي تحتاج إليها

public void get_author(Document document) {
    Node node = document.selectSingleNode( "//AppealRequestProcessRequest/author" );
    String author = node.getText();
    return author;
}

ما هي أفضل طريقة لتحليل وثائق شمل متعددة ومتفردة ومخصصة مع جافا؟


إذا كنت بحاجة فقط إلى تحليل ثم أنصح باستخدام مكتبة زباث. في ما يلي مرجع جميل: http://www.ibm.com/developerworks/library/x-javaxpathapi.html

ولكن قد تحتاج إلى النظر في تحويل شمل إلى الكائنات ثم السماء هو الحد. لذلك يمكنك استخدام ستريم ، وهذا هو مكتبة كبيرة التي يمكنني استخدام الكثير


وأود أن استخدام ستاكس لتحليل شمل، انها سريعة وسهلة الاستخدام. لقد تم استخدامه في مشروعي الأخير لتحليل ملفات شمل تصل إلى 24MB. هناك مقدمة لطيفة على java.net ، الذي يخبرك كل ما تحتاج إلى معرفته للبدء.


في الأساس، لديك اثنين من طرق تحليل شمل الرئيسية في جافا:

  • ساكس ، حيث يمكنك استخدام معالج فقط للاستيلاء على ما تريد في شمل الخاص بك والتخلص من بقية
  • دوم ، الذي يوزع الملف الخاص بك على طول، ويسمح لك لانتزاع جميع العناصر بطريقة أكثر شجرة مثل.

وهناك طريقة أخرى مفيدة جدا لتحليل شمل، وإن كانت أكثر حداثة من تلك التي تم تضمينها في جري فقط منذ Java6، فهي ستاكس . تم تصور ستاكس كطريقة وسطي بين شجرة القائم على دوم والنهج القائم على الحدث ساكس. وهو مشابه تماما ل ساكس في حقيقة أن تحليل وثائق كبيرة جدا من السهل، ولكن في هذه الحالة تطبيق "يسحب" معلومات من المحلل، بدلا من تحليل "دفع" الأحداث إلى التطبيق. يمكنك العثور على مزيد من التوضيح حول هذا الموضوع هنا .

لذلك، اعتمادا على ما تريد تحقيقه، يمكنك استخدام واحدة من هذه النهج.


وفيما يلي رمز استخراج بعض قيمة القيمة باستخدام فتد-شمل .

import com.ximpleware.*;

public class extractValue{
    public static void  main(String s[]) throws VTDException, IOException{
        VTDGen vg = new VTDGen();
        if (!vg.parseFile("input.xml", false));
        VTDNav vn = vg.getNav();
        AutoPilot ap = new AutoPilot(vn);
        ap.selectXPath("/aa/bb[name='k1']/value");
        int i=0;
        while ((i=ap.evalXPath())!=-1){
            System.out.println(" value ===>"+vn.toString(i));
        }   
    }
}




xml