כתוב מסמך org.w3.dom. לקובץ

1. סקירה כללית

חלק חשוב בטיפול ב- XML ​​הוא יצירת קבצי XML שניתן לצרוך אותם על ידי אחרים.

בעת טיפול ב- XML ​​ב- Java, לעתים קרובות יהיה לנו מופע של org.w3c.dom.Document שאנחנו צריכים לייצא.

במדריך המהיר הזה, נראה כיצד לכתוב א מסמך לקובץ גם בפורמט מקוון וגם בפורמט מודפס יפה.

2. שימוש בשנאי

הרם הכבד בעת כתיבה מסמךs לקבצים הוא javax.xml.transform.Transformer.

2.1. יצירת השנאי

אז בואו נתחיל בקבלת א TransformerFactory. נשתמש במפעל זה כדי ליצור את השנאי:

TransformerFactory transformerFactory = TransformerFactory.newInstance ()

מאפיין המערכת javax.xml.transform.TransformerFactory מציין איזה יישום מפעל ליצור. כתוצאה מכך, שם מאפיין זה תת-מחלקה קונקרטית של TransformerFactory מעמד מופשט. אך אם לא נגדיר מאפיין זה, השנאי פשוט ישתמש בברירת מחדל של פלטפורמה.

שים לב שמאז Java 9, אנו יכולים להשתמש TransformerFactory. newDefaultInstance () ליצירת יישום ברירת המחדל של המערכת המובנית.

עכשיו שיש לנו את המפעל, בואו ניצור את שַׁנַאי:

שנאי שנאי = transformerFactory.newTransformer ();

2.2. ציון המקור והתוצאה

ה שַׁנַאי הופך מקור לתוצאה. במקרה שלנו, המקור הוא מסמך ה- XML ​​והתוצאה היא קובץ הפלט.

ראשית, בואו נציין את מקור השינוי. כאן, נשתמש ב מסמך לבניית מקור DOM:

מקור DOMSource = DOMSource חדש (מסמך);

שים לב שהמקור לא צריך להיות כל המסמך. כל עוד ה- XML ​​מעוצב היטב, אנו יכולים להשתמש בעץ משנה של המסמך.

לאחר מכן, נציין היכן השנאי צריך לכתוב את תוצאת השינוי:

כותב FileWriter = FileWriter חדש (קובץ חדש (fileName)); תוצאת StreamResult = StreamResult חדש (כותב);

הנה, אנו אומרים לשנאי שהתוצאה היא זרם קבצים. אבל, אנחנו יכולים להשתמש בכל סוג של java.io.Writer אוֹ java.io.OutputStream ליצור את StreamResult.לדוגמה, נוכל להשתמש ב- StringWriter לבנות א חוּט לאחר מכן ניתן לרשום.

2.3. יצירת קובץ ה- XML

לבסוף, נגיד לשנאי לפעול על אובייקט המקור ולהפיק לאובייקט התוצאה:

transformer.transform (מקור, תוצאה);

זה ייצור סוף סוף קובץ עם תוכן מסמך ה- XML:

3. התאמה אישית של הפלט

אנו יכולים להתאים אישית את ה- XML ​​שנכתב לקובץ על ידי ציון מגוון מאפייני הפלט. בואו נחקור כמה כאלה.

3.1. די מדפיס את הפלט

כעת, שנאי ברירת המחדל שלנו פשוט כתב הכל על שורה אחת, שאינה נעימה לקריאה. ואכן, יהיה קשה עוד יותר לקרוא אם ה- XML ​​היה גדול.

אנו יכולים להגדיר את השנאי שלנו להדפסה יפה על ידי הגדרת ה- OutputKeys.INDENT רכוש על השנאי:

transformer.setOutputProperty (OutputKeys.INDENT, "כן"); transformer.setOutputProperty ("{// xml.apache.org/xslt}indent-amount", "4");

שימו לב שיחד עם ה- OutputKeys.INDENT, ציינו גם את סכום כניסה נכס כאן. זה יכניס את הפלט בצורה נכונה, מכיוון שבברירת המחדל הכניסה היא אפס רווחים.

עם ההגדרה של המאפיינים לעיל, אנו מקבלים תפוקה נחמדה בהרבה:

3.2. השמטת הצהרת ה- XML

לפעמים, אולי נרצה לא לכלול את הצהרת ה- XML.

אנו יכולים להגדיר את השנאי שלנו כך על ידי הגדרת ה- OutputKeys.OMIT_XML_DECLARATION תכונה:

transformer.setOutputProperty (OutputKeys.OMIT_XML_DECLARATION, "כן");

ומשתמשים בשנאי שלנו שוב, אנו מקבלים:

3.3. מאפייני תפוקה אחרים

לכן, מלבד הדפסה יפה והשמטת הצהרת ה- XML, אנו יכולים להתאים אישית את הפלט גם בדרכים אחרות:

  • אנו יכולים לציין את גרסת ה- XML ​​באמצעות OutputKeys.VERSION, ברירת המחדל היא "1.0"
  • אנו יכולים לציין את קידוד התווים המועדף עלינו באמצעות OutputKeys. ENCODING, ברירת המחדל היא "utf-8"
  • ונוכל גם לציין תכונות הצהרה טיפוסיות אחרות כמו מערכת, פּוּמְבֵּי, ו סטנדרט.

4. מסקנה

במדריך זה ראינו כיצד לייצא org.w3c.Document לקובץ וכיצד להתאים אישית את הפלט.

וכמובן, קוד המקור הנלווה זמין ב- GitHub.


$config[zx-auto] not found$config[zx-overlay] not found