การอ่านที่เกี่ยวข้อง:
ใช้ AJAX เพื่ออัปโหลดไฟล์และพารามิเตอร์อื่น ๆ (การพัฒนา Java)
1. ไฟล์ XML:
XML คืออะไร? โดยทั่วไป XML หมายถึงภาษามาร์กอัปที่ขยายได้ชุดย่อยของภาษามาร์กอัปมาตรฐานมาตรฐานและเป็นภาษามาร์กอัปที่ใช้ทำเครื่องหมายไฟล์อิเล็กทรอนิกส์เพื่อสร้างโครงสร้าง
2. ข้อดีของไฟล์ XML:
1) เนื้อหาและโครงสร้างของเอกสาร XML ถูกแยกออกจากกันอย่างสมบูรณ์
2) การทำงานร่วมกันที่แข็งแกร่ง
3) มาตรฐานและรวมกัน
4) รองรับการเข้ารหัสหลายรายการ
5) ความยืดหยุ่นที่แข็งแกร่ง
3. วิธีแยกวิเคราะห์เอกสาร XML:
การแยกวิเคราะห์ XML เอกสาร XML ในภาษาต่าง ๆ นั้นเหมือนกัน แต่ไวยากรณ์การใช้งานจะแตกต่างกัน มีวิธีการแยกวิเคราะห์พื้นฐานสองวิธี หนึ่งคือวิธี SAX ซึ่งเป็นการแยกวิเคราะห์ทีละขั้นตอนตามลำดับของไฟล์ XML วิธีการวิเคราะห์อื่นคือวิธี DOM และกุญแจสู่วิธี DOM คือโหนด นอกจากนี้ยังมี DOM4J, JDOM และวิธีอื่น ๆ บทความนี้แนะนำวิธี DOM และ DOM4J และวิธีการห่อหุ้มพวกเขาลงในคลาสเครื่องมือเพื่ออ่านเอกสาร XML
4.xml เอกสาร:
คะแนน xml:
<? XML เวอร์ชัน = "1.0" การเข้ารหัส = "UTF-8"?> <! นักเรียน doctype [<! นักเรียนองค์ประกอบ (นักเรียน+)> <! นักเรียนองค์ประกอบ (ชื่อ, คะแนน, คะแนน)> <! attlist นักเรียน ID CDATA #Required> <ชื่อองค์ประกอบ (#pcdata)> <! id = "11"> <name> Zhang San </name> <cours> javase </course> <coal> 100 </score> </student> <ident id = "22"> <name> li si </name> <course> Oracle </ourse>
5. การแยกวิเคราะห์ xml
โมฆะคงที่สาธารณะหลัก (String [] args) พ่น parserconfigurationException, saxexception, ioexception {// 1 สร้าง Dom Parser Factory DocumentBuilderFactory DBF = DocumentBuilderFactory.NewInstance (); // 2. สร้างตัวแยกวิเคราะห์ DOM จาก Dom Parser Factory DocumentBuilder db = dbf.newdocumentbuilder (); // 3. แยกวิเคราะห์เอกสารจากตัวแยกวิเคราะห์ DOM เพื่อสร้างเอกสาร DOM Tree Doc = db.parse ("scores.xml"); // 4. แยกวิเคราะห์แผนผัง DOM และรับเนื้อหาเอกสาร (ข้อความแอตทริบิวต์องค์ประกอบ) //4.1 รับคะแนนรูทองค์ประกอบคะแนน Nodelist ScoresList = doc.getChildNodes (); Node scoresNode = scoreslist.item (1); System.out.println (scoreslist.getLength ()); //4.2 รับองค์ประกอบเด็กทั้งหมดในคะแนนนักเรียน NodeList studentList = scoresNode.getChildNodes (); System.out.println (StudentList.getLength ()); //4.3 ประมวลผลนักเรียนแต่ละคนสำหรับ (int i = 0; i <studentlist.getLength (); i ++) {node stunode = studentlist.item (i); //system.out.println (stunode.getNodeType ()); // รหัสแอตทริบิวต์ขององค์ประกอบเอาต์พุตถ้า (stunode.getNodeType () == node.element_node) {องค์ประกอบ elem = (องค์ประกอบ) stunode; string id = elem.getAttribute ("id"); System.out.println ("id ------>"+id); } // องค์ประกอบลูกของชื่อองค์ประกอบเอาท์พุทคะแนนหลักสูตร NODELIST NCSLIST = Stunode.getChildNodes (); //system.out.println (ncslist.getLength ()); สำหรับ (int j = 0; j <ncslist.getLength (); j ++) {node ncs = ncslist.item (j); if (ncs.getNodeType () == node.element_node) {ชื่อสตริง = ncs.getNodeName (); // ค่าสตริง = ncs.getFirstChild (). getNodeValue (); // text เป็นลูกขององค์ประกอบดังนั้นคุณต้อง getFirstChild ค่าสตริง = ncs.getTextContent (); System.out.println (ชื่อ+"----->"+ค่า); }} system.out.println (); -6. วิธีการ DOM4J แยกวิเคราะห์เอกสาร XML:
โมฆะคงที่สาธารณะหลัก (สตริง [] args) พ่น documentException {// ใช้ dom4j เพื่อแยกวิเคราะห์คะแนน 2.xml, สร้างตัวอ่าน Dom Tree SaxReader = new SaxReader (); เอกสารเอกสาร = reader.read (ไฟล์ใหม่ ("scores.xml")); // รับรูทโหนด: องค์ประกอบของนักเรียนรูท = doc.getRootElement (); // รับโหนดเด็กทั้งหมดของนักเรียน: iterator นักเรียน <Element> it = root.ElementIterator (); // ฝึกอบรมนักเรียนแต่ละคนในขณะที่ (it.hasnext ()) {// รับองค์ประกอบนักเรียนแต่ละคน stuelem = it.next (); //system.out.println(stuelem); // แอตทริบิวต์ของนักเรียนเอาท์พุท: รายการรหัส <attribute> attlist = stuelem.attributes (); สำหรับ (แอตทริบิวต์ attr: attlist) {string name = attr.getName (); ค่าสตริง = attr.getValue (); System.out.println (ชื่อ+"----->"+ค่า); } // องค์ประกอบของนักเรียนของนักเรียน: ชื่อ, หลักสูตร, คะแนน Iterator <element> it2 = stuelem.elementiterator (); ในขณะที่ (it2.hasnext ()) {องค์ประกอบ elem = it2.next (); ชื่อสตริง = elem.getName (); String text = elem.getText (); System.out.println (ชื่อ+"----->"+ข้อความ); } system.out.println (); -แน่นอนไม่ว่าเราจะแยก XML แบบไหนเราจำเป็นต้องนำเข้าแพ็คเกจ JAR (อย่าลืม)
7. วิธีของฉันเอง:
ในโครงการพัฒนาจริงเราต้องใช้คลาสเครื่องมือและห่อหุ้มฟังก์ชั่นที่เราใช้ซ้ำในคลาสเครื่องมือ ดังนั้นวิธีการต่อไปนี้คือวิธีที่ฉันใช้ในระหว่างกระบวนการพัฒนา
7.1 ไฟล์คุณสมบัติคืออะไร:
7.1.1 โครงสร้าง:
ไฟล์. xml ส่วนใหญ่เป็นไฟล์ทรี
ไฟล์. properties ส่วนใหญ่มีอยู่ในรูปแบบของคู่คีย์-ค่าคีย์-ค่า
7.1.2 จากมุมมองที่ยืดหยุ่น:
ไฟล์. xml มีความยืดหยุ่นมากกว่าไฟล์. properties
7.1.3 จากมุมมองที่สะดวก:
ไฟล์. properties ง่ายต่อการกำหนดค่ามากกว่าไฟล์. xml
7.1.4 จากมุมมองของแอปพลิเคชัน:
ไฟล์. properties เหมาะสำหรับโครงการขนาดเล็กและเรียบง่ายเนื่องจาก. xml มีความยืดหยุ่นมากกว่า
7.2 เอกสารคุณสมบัติของคุณเอง:
ฉันสร้างไฟล์ path.properties ในโครงการของฉันเองซึ่งใช้ในการจัดเก็บเส้นทางที่ฉันจะใช้และเก็บไว้ในรูปแบบของชื่อ = ค่า ตัวอย่างเช่น:
realPath = d:/ไฟล์/
7.3 แยกวิเคราะห์ไฟล์. properties ของคุณเอง:
คุณสมบัติคลาสสาธารณะ {คุณสมบัติคงที่ส่วนตัวผู้จัดการ = null; Object ManagerLock วัตถุส่วนตัว = New Object (); คุณสมบัติวัตถุส่วนตัว Lock = New Object (); ฐานข้อมูลสตริงคงที่ส่วนตัว _config_file = "/path.properties"; คุณสมบัติส่วนตัวคุณสมบัติ = null; Public PropertiesUtil GetInstance () {if (manager == null) {ซิงโครไนซ์ (managerLock) {ถ้า (manager == null) {manager = new propertiesUtil (); }}} ตัวจัดการการส่งคืน; } Private PropertiesUtil () {} สตริงคงที่สาธารณะ getProperty (ชื่อสตริง) {return getInstance () ._ getProperty (ชื่อ); } สตริงส่วนตัว _getProperty (ชื่อสตริง) {InitProperty (); สตริงคุณสมบัติ = properties.getProperty (ชื่อ); if (property == null) {return ""; } else {return property.trim (); }} การแจงนับคงที่สาธารณะ <?> PropertyNames () {return getInstance () ._ PropertyNames (); } การแจงนับส่วนตัว <?> _propertyNames () {InitProperty (); Properties.propertyNames (); } โมฆะส่วนตัว initProperty () {if (properties == null) {ซิงโครไนซ์ (propertieslock) {if (properties == null) {loadproperties (); }}}} โมฆะส่วนตัว loadproperties () {properties = คุณสมบัติใหม่ (); inputStream ใน = null; ลอง {in = getClass (). getResourceasstream (database_config_file); Properties.load (in); } catch (exception e) {system.err .println ("ข้อผิดพลาดการอ่านคุณสมบัติ conf ใน PropertiesUtil.loadprops ()" + e); E.PrintStackTrace (); } ในที่สุด {ลอง {in.close (); } catch (exception e) {}}} / ** * ให้เส้นทางไฟล์การกำหนดค่า * * @param filepath * @return * / คุณสมบัติสาธารณะ loadproperties (สตริง filepath) {คุณสมบัติคุณสมบัติ = คุณสมบัติใหม่ (); inputStream ใน = null; ลอง {in = getClass (). getResourceasstream (filePath); Properties.load (in); } catch (exception e) {system.err .println ("ข้อผิดพลาดการอ่านคุณสมบัติ conf ใน PropertiesUtil.loadProperties ()" + e); E.PrintStackTrace (); } ในที่สุด {ลอง {in.close (); } catch (exception e) {}} คุณสมบัติการส่งคืน; - ก่อนที่เราจะใช้เราจะต้องแนบค่ากับคุณสมบัติ DATABASE_CONFIG_FILE ซึ่งเป็นชื่อของไฟล์. properties ของเรา เมื่อใช้งานเราสามารถใช้ชื่อคลาสได้โดยตรง getProperty(“realPath”); เพื่อให้ได้เนื้อหาที่มีคีย์ในไฟล์. properties ที่เป็น realpath
ข้างต้นเป็นวิธีการอ่าน XML และไฟล์การกำหนดค่าคุณสมบัติในการพัฒนา Java ที่แนะนำโดยตัวแก้ไข ฉันหวังว่ามันจะเป็นประโยชน์กับคุณ หากคุณมีคำถามใด ๆ โปรดฝากข้อความถึงฉันและบรรณาธิการจะตอบกลับคุณทันเวลา!