محلل SAX: كيفية قراءة ملف XML في Java
<ب>محلل ساكسب> Sax هو المحلل اللغوي الأكثر شيوعا لأحدث DOM ، على عكس DOM ، يعمل Sax بشكل مختلف ، ولا يقوم بتحميل XML في الذاكرة قبل معالجته ، ولا ينشئ أي نوع من كائنات XML. يعد SAX اختيارا جيدا لتحليل ملف xml كبير لأنه يستهلك ذاكرة أقل.يستخدم محلل SAX ثلاث طرق لتحليل وقراءة xml:
startElement(): عندما يواجه محلل SAX علامة فتح '<'، فإنه يستدعي startElement().
endElement(): في < / span > كلما واجه محلل SAX علامة إغلاق '>' ، فإنه يستدعي startElement().
الأحرف () < / ب >: تسمى هذه الطريقة عندما يجد محلل SAX نصا بين علامة الفتح والإغلاق
هذه الطرق الثلاث مسؤولة عن تحليل xml ، ويستخدمها المبرمج لتحليل المعلومات أو قراءتها أو استخراجها من الكود.
استخراج النص من ملف xml في java
لاختبار كود جافا ، يجب عليك إنشاء ملف XML بسيط ستستخدمه لعرض محتوياته في وحدة التحكم:< pre class = "PrettyPrint lang-java" ><؟ إصدار xml = "1.0" الترميز = "UTF-8"؟> < / >< جهات الاتصال> < فرع /> < معرف الشخص = "1" > < فرع /> < اسم> التشفير < فرع /> < الاسم الأول> جاوة < فرع /> < المحمول> 054124587 < فرع /> < البريد الإلكتروني> codeurjava@gmail.com < / > < / شخص> < فرع /> < معرف الشخص = "2"> < فرع /> < اسم> التشفير < فرع /> < الاسم الأول> ج ++ < فرع /> < المحمول> 062148795 < فرع /> < البريد الإلكتروني> codeurcplusplus@gmail.com < / > < / شخص>
< / جهات الاتصال>
< / pre> جافا:
< pre class = "prettyprint lang-java" >import javax.xml.parsers.SAXParser; < br / > استيراد javax.xml.parsers.SAXParserFactory ؛
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;
من الفئة العامة ReadFileXML {
الفراغ العام الثابت الرئيسي (سلسلة argv []) {
try {
//Get sax parser
SAXParserFactory spfactory = SAXParserFactory.newInstance();
//احصل على مثيل لكائن المحلل اللغوي
SAXParser saxParser = spfactory.newSAXParser();
/ * يتم الإعلان عن جميع الطرق الثلاث في DefaltHandler / > corp
معالج DefaultHandler = DefaultHandler الجديد () {
bnom المنطقي = false ؛
الاسم المنطقي bprefirst = خطأ ؛
boolean bmobile = false ؛
bemail منطقي = خطأ ؛
/ * يتم استدعاء هذه الطريقة كلما واجه المحلل اللغوي
علامة افتتاحية '<' * /
startElement الفراغ العام (سلسلة uri ، سلسلة localName ،
سلسلة qName ، سمات السمات) يلقي SAXException {
if (qName.equalsIgnoreCase ("name")) {
bnom = true ؛
}
if (qName.equalsIgnoreCase ("firstname")) {
bfirstname = true ؛
}
if (qName.equalsIgnoreCase ("mobile")) {
bmobile = true ؛
}
إذا كان (qName.equalsIgnoreCase ("البريد الإلكتروني") {
bemail = true ؛
}
}
/ * يتم استدعاء هذه الطريقة كلما واجه المحلل اللغوي
علامة إغلاق ">" * /
نهاية الفراغ العام (سلسلة uri ، سلسلة localName ،
سلسلة qName) يلقي SAXException {
if (qName.equalsIgnoreCase ("name")) {
bnom = false ؛
}
if (qName.equalsIgnoreCase ("الاسم الأول")) {
bfirstname = false ؛
}
if (qName.equalsIgnoreCase ("mobile")) {
bmobile = false ؛
}
if (qName.equalsIgnoreCase ("البريد الإلكتروني") {
bemail = false ؛
}
}
/* يطبع البيانات المخزنة بين '<' و '>' */
الأحرف الفارغة العامة (char ch[] ، int start ،
int length ) يلقي SAXException {
if (bnom) {
System.out.println ("الاسم: " +
سلسلة جديدة (ch ، البداية ، الطول)) ؛
bnom = false ؛
}
if (bprename) {
System.out.println ("الاسم الأول: " +
سلسلة جديدة (ch ، بداية ، طول)) ؛
bالاسم الأول = خطأ ؛
}
if (bmobile) {
System.out.println ("Mobile : " +
سلسلة جديدة (ch ، بداية ، طول)) ؛
bmobile = خطأ ؛
}
if (bemail) {
System.out.println ("البريد الإلكتروني: " +
سلسلة جديدة (ch ، البداية ، الطول)) ؛
bemail = خطأ ؛
}
}
} ؛
saxParser.parse ("exemple.xml" ، معالج) ؛
} الصيد (استثناء ه) {
e.printStackTrace();
}
}
}
< / pre>Execution:
< pre class = "prettyprint lang-java" > اسم العائلة: coder
الاسم الأول: java
Mobile: 054124587
البريد الإلكتروني: codeurjava@gmail.com
اسم العائلة: coder
الاسم الأول: c ++
الهاتف المحمول: 062148795
البريد الإلكتروني: codeurcplusplus@gmail.com< / قبل>