β ΠΠΎΠ΄Π΅Π»ΠΈ ΠΎΠ΄Π½ΠΎΠ½Π°ΠΏΡΠ°Π²Π»Π΅Π½Π½ΠΎΠΉ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ Π΄Π°Π½Π½ΡΡ Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΡΠΉ Π΄ΠΎΡΡΡΠΏ ΠΊ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΠΌ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°. ΠΠ°ΠΌ Π΄Π°Π΅ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄ΠΈΠ½ "Π²ΡΡΡΡΠ΅Π»", ΡΡΠΎΠ±Ρ ΡΡΠΏΠ΅ΡΡ ΡΠ΄Π΅Π»Π°ΡΡ ΡΡΠΎ-Π»ΠΈΠ±ΠΎ Ρ Π΄Π°Π½Π½ΡΠΌΠΈ ΠΏΠΎ ΠΌΠ΅ΡΠ΅ ΠΈΡ ΡΡΠ΅Π½ΠΈΡ. ΠΡΠ»ΠΈ Π²Π°Ρ Π°Π»Π³ΠΎΡΠΈΡΠΌ Π½ΡΠΆΠ΄Π°Π΅ΡΡΡ Π² Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΎΠΌ ΠΏΠ΅ΡΠ΅ΠΊΡΠ΅ΡΡΠ½ΠΎΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ Π΄Π°Π½Π½ΡΡ ΠΈΠ»ΠΈ Π²Π½Π΅ΡΠ΅Π½ΠΈΠΈ Π²Π·Π°ΠΈΠΌΠΎΡΠ²ΡΠ·Π°Π½Π½ΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² Π΄Π°Π½Π½ΡΠ΅, ΠΎΡΠ½ΠΎΡΡΡΠΈΠ΅ΡΡ ΠΊ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠΌ ΡΠ°ΡΡΡΠΌ XML-Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°, ΡΠΎ Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ Π²Π°ΠΌ ΠΏΡΠΈΠ΄Π΅ΡΡΡ ΡΠ°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»ΡΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°ΡΡ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΡΠ»ΠΎΠΆΠ½ΡΠΉ ΠΊΠΎΠ΄, ΠΈΠ½ΡΠ΅Π½ΡΠΈΠ²Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠΈΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΡΠΎΡΡΠΎΡΠ½ΠΈΠΈ. ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΌΠΎΠ΄Π΅Π»Ρ XML DOM ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ Ρ ΡΠ°Π½ΡΡΠ΅Π΅ΡΡ Π² ΠΏΠ°ΠΌΡΡΠΈ Π΄Π΅ΡΠ΅Π²ΠΎ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°, ΠΎΠ½Π° ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π»Π΅Π³ΠΊΠΎ ΡΠΎΠ²Π΅ΡΡΠ°ΡΡ ΠΎΠ±Ρ ΠΎΠ΄ ΡΡΠΎΠ³ΠΎ Π΄Π΅ΡΠ΅Π²Π° Π΄Π»Ρ ΠΏΠΎΠΈΡΠΊΠ° Π½ΡΠΆΠ½ΡΡ ΡΠ·Π»ΠΎΠ² ΠΈ Π²Π½Π΅ΡΠ΅Π½ΠΈΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ.
β ΠΠΎΠ΄Π΅Π»ΠΈ ΠΎΠ΄Π½ΠΎΠ½Π°ΠΏΡΠ°Π²Π»Π΅Π½Π½ΠΎΠΉ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ Π΄Π°Π½Π½ΡΡ ΡΡΠ΅Π±ΡΡΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΌΠ° ΡΠ°Π±ΠΎΡΡ Π΄Π»Ρ ΡΠ΅ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΈ Π²ΡΠ΅ΠΉ ΡΡΡΡΠΊΡΡΡΡ Π΄Π΅ΡΠ΅Π²Π°. ΠΡΠ»ΠΈ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ Π²ΡΠ²Π΅ΡΡΠΈ Π΄Π»Ρ Π·Π°ΠΏΠΈΡΠΈ ΡΠΎΡ ΠΆΠ΅ ΡΠ°ΠΌΡΠΉ Π΄ΠΎΠΊΡΠΌΠ΅Π½Ρ, ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ» ΡΡΠΈΡΠ°Π½, ΡΠΎ Π²Π°ΠΌ ΠΏΡΠΈΠ΄Π΅ΡΡΡ ΠΏΡΠΎΠ΄ΡΠ±Π»ΠΈΡΠΎΠ²Π°ΡΡ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΡΡ ΡΠ°ΡΡΡ ΡΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΠΈ XML DOM, ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΠΊΠΎΡΠΎΡΠΎΠΉ ΡΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ Π±Ρ ΡΠ΄Π΅Π»Π°ΡΡ. ΠΠ±ΡΠ΅ΠΊΡΡ XMLReader ΠΎΡΠ»ΠΈΡΠ½ΠΎ ΠΏΡΠΈΡΠΏΠΎΡΠΎΠ±Π»Π΅Π½Ρ Π΄Π»Ρ ΠΈΠ·Π²Π»Π΅ΡΠ΅Π½ΠΈΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΡ ΠΏΠΎΡΡΠΈΠΉ Π΄Π°Π½Π½ΡΡ . ΠΠ±ΡΠ΅ΠΊΡΡ XMLWriter ΠΎΡΠ»ΠΈΡΠ½ΠΎ ΠΏΡΠΈΡΠΏΠΎΡΠΎΠ±Π»Π΅Π½Ρ Π΄Π»Ρ Π±ΡΡΡΡΠΎΠ³ΠΎ Π²ΡΠ²ΠΎΠ΄Π° Π²Π°ΡΠΈΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² XML-Π΄Π°Π½Π½ΡΡ . ΠΡΠ»ΠΈ ΠΆΠ΅ Π²Π°ΠΌ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΡΠΈΡΠ°ΡΡ XML-Π΄ΠΎΠΊΡΠΌΠ΅Π½Ρ ΠΈ Π²Π½Π΅ΡΡΠΈ Π² Π½Π΅Π³ΠΎ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΏΠ΅ΡΠ΅Π΄ ΡΠ΅ΠΌ, ΠΊΠ°ΠΊ Π·Π°ΠΏΠΈΡΠ°ΡΡ Π΅Π³ΠΎ ΠΎΠ±ΡΠ°ΡΠ½ΠΎ, ΡΠΎ Π²Π°Ρ Π΄ΡΡΠ³ β DOM.
β ΠΠΎΠ΄Π΅Π»ΠΈ ΠΎΠ΄Π½ΠΎΠ½Π°ΠΏΡΠ°Π²Π»Π΅Π½Π½ΠΎΠΉ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΡΡΠ΅Π±ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π±ΠΎΠ»Π΅Π΅ ΡΠ»ΠΎΠΆΠ½ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΡ ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ, ΡΠ΅Π°Π»ΠΈΠ·ΡΡΡΠΈΡ Π½Π°Π²ΠΈΠ³Π°ΡΠΈΡ ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΠΏΠΎΠΈΡΠΊΠ° Π² ΡΠ»ΠΎΠΆΠ½ΡΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°Ρ . ΠΠ°ΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡΠ°, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ°Π±ΠΎΡΠ°Π» Π±Ρ Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΡΠΌΠΈ ΠΈΠ΅ΡΠ°ΡΡ ΠΈΡΠΌΠΈ XML, ΠΌΠΎΠΆΠ΅Ρ Π²ΡΠ·ΡΠ²Π°ΡΡ Π±ΠΎΠ»ΡΡΠΈΠ΅ ΡΡΡΠ΄Π½ΠΎΡΡΠΈ. Π§ΡΠΎΠ±Ρ Π½Π°ΠΉΡΠΈ ΠΈΡΠΊΠΎΠΌΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ, Π²Π°ΠΌ ΠΏΡΠΈΠ΄Π΅ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΎΡΠ΅Π½Ρ ΡΠ»ΠΎΠΆΠ½ΠΎΠ΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠ΅Π΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ, Π² ΠΊΠ°ΠΊΠΎΠΌ ΡΠ·Π»Π΅ Π΄Π΅ΡΠ΅Π²Π° Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ° Π²Ρ Π½Π°Ρ ΠΎΠ΄ΠΈΡΠ΅ΡΡ. Π’Π°ΠΊ, Π΅ΡΠ»ΠΈ Π²Ρ ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΠ΅ΡΠ΅ ΠΏΠΎΠΈΡΠΊ Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡΠ° <Name>, Π½Π°Ρ ΠΎΠ΄ΡΡΠ΅Π³ΠΎΡΡ Π²Π½ΡΡΡΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡΠ° <Customer>, ΠΈ Π² Π²Π°ΡΠ΅ΠΌ XML-Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ΅ ΠΈΠΌΠ΅ΡΡΡΡ Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡΡ <Name>, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠ°ΠΌ <Customer>, <Employee> ΠΈ <Vendor>, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠ³ΡΡ ΠΏΡΠΈΡΡΡΡΡΠ²ΠΎΠ²Π°ΡΡ Π² XML-Π΄Π΅ΡΠ΅Π²Π΅ Π½Π° ΠΈΠ΅ΡΠ°ΡΡ ΠΈΡΠ΅ΡΠΊΠΈΡ ΡΡΠΎΠ²Π½ΡΡ ΡΠ°Π·Π»ΠΈΡΠ½ΠΎΠΉ Π³Π»ΡΠ±ΠΈΠ½Ρ, ΡΠΎ Π΄Π»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΠΈΠΌΠ΅ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΡΠ°Π·Π»ΠΈΡΠ°ΡΡ ΡΡΠΈ ΡΠ»ΡΡΠ°ΠΈ ΠΈ ΡΠ΅ΠΌ caΠΌΡΠΌ Π³Π°ΡΠ°Π½ΡΠΈΡΠΎΠ²Π°ΡΡ, ΡΡΠΎ Π²Ρ ΠΏΠΎΠ»ΡΡΠ°Π΅ΡΠ΅ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ, Π²Π°ΠΌ ΠΏΡΠΈΠ΄Π΅ΡΡΡ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΠΊΠΎΠ΄, ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°ΡΡΠΈΠΉ, Π² ΠΊΠ°ΠΊΠΎΠΌ ΠΌΠ΅ΡΡΠ΅ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ° Π² Π½Π°ΡΡΠΎΡΡΠ΅Π΅ Π²ΡΠ΅ΠΌΡ ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΡΠΎΡΠΌΠΎΡΡ. ΠΡΠ»ΠΈ Π΄ΠΎΠΊΡΠΌΠ΅Π½Ρ ΡΠ»Π΅Π΄ΡΠ΅Ρ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΠΎΠΉ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎ- ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ ΡΡ Π΅ΠΌΠ΅, ΡΠΎ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΡΡΠΎ Π½Π΅ ΡΠ°ΠΊ ΡΠΆ ΠΏΠ»ΠΎΡ ΠΎ. Π‘ Π΄ΡΡΠ³ΠΎΠΉ ΡΡΠΎΡΠΎΠ½Ρ, Π΅ΡΠ»ΠΈ Π΄ΠΎΠΊΡΠΌΠ΅Π½Ρ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²Π»Π΅Π½ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΡ ΡΡ Π΅ΠΌ, ΡΠΎ Π·Π°Π΄Π°ΡΠ° ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ Π°Π»Π³ΠΎΡΠΈΡΠΌΠΈΡΠ΅ΡΠΊΠΈ ΡΠ»ΠΎΠΆΠ½ΠΎΠΉ. Π ΡΠ»ΡΡΠ°Π΅ ΠΎΡΠΎΠ±ΠΎ ΡΠ»ΠΎΠΆΠ½ΡΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠΎΠ² ΡΠ»Π΅Π΄ΡΠ΅Ρ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅ΡΡ Π²Π°ΡΠΈΠ°Π½Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ Π½Π° ΡΠ΅ΡΠ²Π΅ΡΠ΅, ΠΈΠ±ΠΎ ΡΠ°ΠΌ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΡΡΡΡ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ Π±ΠΎΠ»Π΅Π΅ ΠΌΠΎΡΠ½ΡΠ΅ Π²ΡΡΠΈΡΠ»ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ, Π½ΠΎ ΠΈ Π±ΠΎΠ»Π΅Π΅ ΠΌΠΎΡΠ½ΡΠ΅ API-ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΡ, ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½Π½ΡΠ΅ Π΄Π»Ρ ΠΏΡΠΎΠ²Π΅Π΄Π΅Π½ΠΈΡ ΠΏΠΎΠΈΡΠΊΠ° Π² XML-Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°Ρ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, XPATH, ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΠΈΠΉ Π·Π°ΠΏΡΠΎΡΡ Π΄Π°Π½Π½ΡΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°).
ΠΠΈΠΆΠ΅ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ ΠΏΡΠΎΡΡΠΎΠΉ ΠΊΠΎΠ΄, ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½Π½ΡΠΉ Π΄Π»Ρ ΡΡΠ΅Π½ΠΈΡ ΠΈ Π·Π°ΠΏΠΈΡΠΈ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Π½ΡΡ ΡΠ°Π½Π΅Π΅ Π΄Π°Π½Π½ΡΡ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΎΠ΄Π½ΠΎΠ½Π°ΠΏΡΠ°Π²Π»Π΅Π½Π½ΠΎΠΉ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ XML- Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠΎΠ² Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² XMLReader ΠΈ XMLWriter. ΠΡΠΎΠ±ΡΠΉ ΠΈΠ½ΡΠ΅ΡΠ΅Ρ Π΄Π»Ρ Π²Π°Ρ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡ ΠΊΠΎΠ½Π΅ΡΠ½ΡΠΉ Π°Π²ΡΠΎΠΌΠ°Ρ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠΉ Π² ΠΎΠ±ΡΠ΅ΠΊΡΠ΅ XMLReader Π΄Π»Ρ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°Π½ΠΈΡ ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ ΠΌΠ΅ΡΡΠ° Π² Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ΅; Π·Π°ΠΌΠ΅ΡΡΡΠ΅, ΡΡΠΎ Π΄Π°ΠΆΠ΅ Π΄Π»Ρ ΡΡΠΎΠ»Ρ ΠΏΡΠΎΡΡΠΎΠ³ΠΎ XML-Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°, ΠΊΠ°ΠΊ Π½Π°Ρ, ΡΡΠΎΡ ΠΊΠΎΠ΄ Π²ΠΎΠ²ΡΠ΅ Π½Π΅ ΡΡΠΈΠ²ΠΈΠ°Π»Π΅Π½. Π ΠΏΡΠΎΡΠΈΠ²ΠΎΠΏΠΎΠ»ΠΎΠΆΠ½ΠΎΡΡΡ ΡΡΠΎΠΌΡ ΠΊΠΎΠ΄, ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½Π½ΡΠΉ Π΄Π»Ρ Π²ΡΠ²ΠΎΠ΄Π° XML-Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠΎΠ² ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠ° XMLWriter, ΠΎΡΠ»ΠΈΡΠ°Π΅ΡΡΡ ΠΏΡΠΎΡΡΠΎΡΠΎΠΉ.
ΠΠΈΡΡΠΈΠ½Π³ 10.3. ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΠ΄Π½ΠΎΠ½Π°ΠΏΡΠ°Π²Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΡΡΠ΅Π½ΠΈΡ-Π·Π°ΠΏΠΈΡΠΈ XML-Π΄Π°Π½Π½ΡΡ Π΄Π»Ρ Π·Π°Π³ΡΡΠ·ΠΊΠΈ XML-Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ° ΠΈΠ· ΡΠ°ΠΉΠ»Π° ΠΈ Π΅Π³ΠΎ ΡΠΎΡ ΡΠ°Π½Π΅Π½ΠΈΡusing System;
public class SaveAndLoadXML UseReaderWriter {
//XML-Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΡ Π±ΡΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π² ΡΠ²ΠΎΠ΅ΠΌ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ΅
const string XML_ROOT_TAG = "AllMyData";
const string XML_USERINFO_TAG = "UserInfo";
const string XMI_USERID_TAG = "UserID";
const string XML_NAMEINFO_TAG = "Name";
const string XML_FIRSTNAME_TAG = "FirstName";
const string XML_LASTNAME TAG = "LastName";
//ΠΠ°Π±ΠΎΡ ΡΠΎΡΡΠΎΡΠ½ΠΈΠΉ, ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°Π΅ΠΌΡΡ ΠΏΠΎ ΠΌΠ΅ΡΠ΅ ΡΡΠ΅Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ
private enum ReadLocation {
inAllMyData,
inUserInfo,
inUserID,
inName,
inFirstName,
inLastName,
}
//--------------------------------------------------------------------
//Π‘ΠΎΡ ΡΠ°Π½ΡΠ΅Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠ΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅
//
// [in] fileName: ΠΠΌΡ ΡΠ°ΠΉΠ»Π°, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΠΎΠ³ΠΎ Π΄Π»Ρ ΡΠΎΡ ΡΠ°Π½Π΅Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ
// [in] userId: ΠΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΡ Ρ ΠΎΡΠΈΠΌ ΡΠΎΡ ΡΠ°Π½ΠΈΡΡ
// [in] firstName: ΠΠΌΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΌΡ Ρ ΠΎΡΠΈΠΌ ΡΠΎΡ ΡΠ°Π½ΠΈΡΡ
// [in] lastName: Π€Π°ΠΌΠΈΠ»ΠΈΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ, ΠΊΠΎΡΠΎΡΡΡ ΠΌΡ Ρ ΠΎΡΠΈΠΌ ΡΠΎΡ ΡΠ°Π½ΠΈΡΡ
//--------------------------------------------------------------------
public static void XML_SaveUserInfo(string fileName, int userId,string firstName, string lastName) {
System.Xml.XmlTextWriter xmlTextWriter;
xmlTextWriter =new System.Xml.XmlTextWriter(fileName, System.Text.Encoding.Default);
//ΠΠ°ΠΏΠΈΡΠ°ΡΡ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°!
//<Root>
xmlTextWriter.WriteStartElement(XML_ROOT_TAG);
//<Root>
xmlTextWriter.WriteStartElement(XML_USERINFO_TAG);
//<Root><UserID>
//<Root><UserInfo>
xmlTextWriter.WriteStartElement(XML_NAMEINFO_TAG);
//<Root><UserInfo><Name>
xmlTextWriter.WriteStartElement(XML_FIRSTNAME_TAG);
//<Root><UserInfo><Name><FirstName>
xmlTextWriter.WriteString(firstName); //ΠΠ°ΠΏΠΈΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ
xmlTextWriter.WriteEndElement(); //ΠΠ°ΠΊΡΡΡΡ Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡ ΠΈΠΌΠ΅Π½ΠΈ
//<Root><UserInfo><Name>
xmlTextWriter.WriteStartElement(XML_LASTNAME_TAG);
//<Root><UserInfo><Name><LastName>
xmlTextWriter.WriteString(lastName); //ΠΠ°ΠΏΠΈΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ
xmlTextWriter.WriteEndElement(); //ΠΠ°ΠΊΡΡΡΡ Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡ ΡΠ°ΠΌΠΈΠ»ΠΈΠΈ
//<Root><UserInfo><Name>
xmlTextWriter.WriteEndElement(); //ΠΠ°ΠΊΡΡΡΡ Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡ Π€ΠΠ
//<Root><UserInfo>
//<Root><UserInfo>
xmlTextWriter.WriteStartElement(XML_USERID_TAG);
//<Root><UserInfo><UserID>
//ΠΠ°ΠΏΠΈΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ
xmlTextWriter.WriteString(userId.ToString());
xmlTextWriter.WriteEndElement();
//ΠΠ°ΠΊΡΡΡΡ Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡ UserID
//<Root><Userlnfo>
xmlTextWriter.WriteEndElement(); //ΠΠ°ΠΊΡΡΡΡ Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡ UserInfo
//<Root>
xmlTextWriter.WriteEndElement(); //ΠΠ°ΠΊΡΡΡΡ Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°
//
xmlTextWriter.Close();
}
//--------------------------------------------------------------
//ΠΠ°Π³ΡΡΠΆΠ°Π΅Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠ΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅
//
// [in] fileName: ΠΠΌΡ ΡΠ°ΠΉΠ»Π°, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΠΎΠ³ΠΎ Π΄Π»Ρ ΡΠΎΡ ΡΠ°Π½Π΅Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ
// [out] userId: ΠΠ°Π³ΡΡΠΆΠ΅Π½Π½ΡΠΉ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ
// [out] firstName: ΠΠ°Π³ΡΡΠΆΠ΅Π½Π½ΠΎΠ΅ ΠΈΠΌΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ
// [out] lastName: ΠΠ°Π³ΡΡΠΆΠ΅Π½Π½Π°Ρ ΡΠ°ΠΌΠΈΠ»ΠΈΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ
//--------------------------------------------------------------
public static void XML_LoadUserInfo(string fileName, out int userId, out string firstName,out string lastName) {
ReadLocation currentReadLocation;
//ΠΠ°ΡΠΈΠ½Π°Π΅ΠΌ Ρ Π½ΡΠ»Π΅Π²ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ
userId = 0;
firstName = "";
lastName = "";
System.Xml.XmlTextReader xmlReader = new System.Xml.XmlTextReader(fileName);
xmlReader.WhitespaceHandling = System.Xml.WhitespaceHandling.None;
bool readSuccess;
readSuccess = xmlReader.Read();
if (readSuccess == false) {
throw new System.Exception("ΠΡΡΡΡΡΡΠ²ΡΡΡ XML-Π΄Π°Π½Π½ΡΠ΅ Π΄Π»Ρ ΡΡΠ΅Π½ΠΈΡ!");
}
//Π£Π±Π΅Π΄ΠΈΡΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ ΠΌΡ ΡΠ°ΡΠΏΠΎΠ·Π½Π°Π»ΠΈ ΠΊΠΎΡΠ½Π΅Π²ΠΎΠΉ Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡ
if (xmlReader.Name != XML_ROOT_TAG) {
throw new System.Exception("ΠΠΎΡΠ½Π΅Π²ΠΎΠΉ Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡ ΠΎΡΠ»ΠΈΡΠ°Π΅ΡΡΡ ΠΎΡ ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΠΎΠ³ΠΎ!");
}
//ΠΡΠΌΠ΅ΡΠΈΡΡ ΡΠ΅ΠΊΡΡΠ΅Π΅ ΠΌΠ΅ΡΡΠΎΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ΅
currentReadLocation = ReadLocation.inAllMyData;
//------------------------------------------------------
//Π¦ΠΈΠΊΠ» ΠΏΡΠΎΡ ΠΎΠΆΠ΄Π΅Π½ΠΈΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ° ΠΈ ΡΡΠ΅Π½ΠΈΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΡ Π΄Π°Π½Π½ΡΡ
//------------------------------------------------------
while (readSuccess) {
switch (xmlReader.NodeType) {
//ΠΡΠ·ΡΠ²Π°Π΅ΡΡΡ ΠΏΡΠΈ Π²Ρ ΠΎΠ΄Π΅ Π² Π½ΠΎΠ²ΡΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ
case System.Xml.XmlNodeType.Element: {
string nodeName = xmlReader.Name;
LoadHelper_NewElementEncountered(nodeName, ref currentReadLocation);
break;
}
//----------------------------------------------------
//ΠΠ΄Π΅ΡΡ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΠ·Π²Π»Π΅ΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΡΠ΅ΠΊΡΡ ΠΈ
//ΠΏΠΎΠ»ΡΡΠΈΡΡ Π΄Π°Π½Π½ΡΠ΅, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΡΠ°Π΅ΠΌΡΡ Π·Π°Π³ΡΡΠ·ΠΈΡΡ
//----------------------------------------------------
case System.Xml.XmlNodeType.Text: {
switch (currentReadLocation) {
case ReadLocation.inFirstName: {
firstName = xmlReader.Value;
break;
}
case ReadLocation.inLastName: {
lastName = xmlReader.Value;
break;
}
case ReadLocation.inUserID: {
userId = System.Convert.ToInt32(xmlReader.Value);
break;
}
}