рд▓реЗрдХрд┐рди рдЕрдм рд╣рдо рдПрдХреНрд╕рдПрд╕рдПрд▓рдЯреА рдХреЗ рдлрд╛рдпрджреЗ рдФрд░ рдиреБрдХрд╕рд╛рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВ (рдореБрдЭреЗ рдпрдХреАрди рд╣реИ рдХрд┐ рдЗрд╕ рддрдХрдиреАрдХ рдХреЗ рд╡рд┐рд░реЛрдзрд┐рдпреЛрдВ рдФрд░ рд╕рдорд░реНрдердХреЛрдВ рдХреЛ рдкреНрд░рдЪреБрд░ рдорд╛рддреНрд░рд╛ рдореЗрдВ рдорд┐рд▓реЗрдЧрд╛)ред рдореИрдВ рдПрдХ рдРрд╕реА рддрдХрдиреАрдХ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдЬреЛ XSLT рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдХреЗ рд╕рд╛рде рдореМрдЬреВрджрд╛ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ, рдФрд░ рдПрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рд▓рд┐рдП рдПрдХ рд▓рд┐рдВрдХ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдЗрд╕ рддрдХрдиреАрдХ рдХреЛ рдЕрдЪреНрдЫреЗ рдкреНрд░рджрд░реНрд╢рди рдХреЗ рд╕рд╛рде рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИред
XML рдкрд╛рдардХреАрдп рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХреА рдкреАрдврд╝реА рдХреЛ рджрд░рдХрд┐рдирд╛рд░ рдХрд░рддреЗ рд╣реБрдП XSLT рдХреЛ рдбреЗрдЯрд╛ рдкрд╛рд╕ рдХрд░реЗрдВ
рдХрд▓реНрдкрдирд╛ рдХрд░реЗрдВ рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдирд┐рдпрдВрддреНрд░рдХ рд╣реИ рдЬреЛ рдкреГрд╖реНрда рдкрд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд╕реНрддреБрдУрдВ рдХреЗ рдХреБрдЫ рдиреЗрд╕реНрдЯреЗрдб PHP рд╕реВрдЪреА рдмрдирд╛рддрд╛ рд╣реИред рдЙрд╕реЗ рдЗрд╕ рд╕рд░рдгреА рдХреЛ XML рдореЗрдВ рдмрджрд▓рдирд╛ рд╣реЛрдЧрд╛, рдЬреЛ рддрдм XSLT рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЗ рдЗрдирдкреБрдЯ рдкрд░ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ PHP рд╕рдВрд░рдЪрдирд╛рдУрдВ рд╕реЗ рдПрдХреНрд╕рдПрдордПрд▓ рдореЗрдВ рдпрд╣ рд░реВрдкрд╛рдВрддрд░рдг рдкреНрд░рддреНрдпреЗрдХ рдирд┐рдпрдВрддреНрд░рдХ рдореЗрдВ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдЕрдореВрд░реНрдд рдХреА рдХреБрдЫ рдордзреНрдпрд╡рд░реНрддреА рдкрд░рдд рдереА рдЬреЛ рдХрд┐ рдПрдХреНрд╕рдПрд╕рдПрд▓рдЯреАрдЯреА рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЛ рд╕реАрдзреЗ рдкреАрдПрдЪрдкреА рдбреЗрдЯрд╛ рдкрд░ рд▓рд╛рдЧреВ рдХрд░ рд╕рдХрддреА рдереА, рдЬреЛ рдкрд╛рда рдХреЗ рдПрдХреНрд╕рдПрдордПрд▓ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХреЛ рджрд░рдХрд┐рдирд╛рд░ рдХрд░ рд╕рдХрддреА рдереАред рдЗрд╕рд▓рд┐рдП рд╣рдо рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдХрдо рдХрд░ рджреЗрдВрдЧреЗ, рдФрд░ рдкрддреНрд░ рдХрдо рд╣реЛ рдЬрд╛рдПрдЧрд╛ред рд╣рдо рдбреЗрдЯрд╛ рдХреЗ XML рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХреЛ рджрд░рдХрд┐рдирд╛рд░ рдХрд░рддреЗ рд╣реБрдП рд╕реАрдзреЗ XSLT рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдХреБрдЫ рд╕рдордп рдкрд╣рд▓реЗ, рдореИрдВрдиреЗ C PHP рдПрдХреНрд╕рдЯреЗрдВрд╢рди dom_varimport ( GitHub рдкрд░ рдкреЛрд╕реНрдЯ ) рдореЗрдВ рд▓рд┐рдЦрд╛ рдерд╛ред рдЗрд╕рдореЗрдВ рдЙрд╕реА рдирд╛рдо рдХрд╛ рдлрд╝рдВрдХреНрд╢рди рд╣реЛрддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдЗрдирдкреБрдЯ рдкрд░ DOMDocument рдСрдмреНрдЬреЗрдХреНрдЯ рдФрд░ рдХрд┐рд╕реА рднреА рдиреЗрд╕реНрдЯрд┐рдВрдЧ рдХреЗ PHP рд╕рд░рдгреА рдХреА рдЖрдкреВрд░реНрддрд┐ рдХреА рдЬрд╛рддреА рд╣реИред рдлрд╝рдВрдХреНрд╢рди DOMDocument рдХреЛ рдЗрдирдкреБрдЯ рд╕рд░рдгреА рдХреЗ XML рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХреЗ рд╕рд╛рде рдЗрд╕реЗ рдкрд╛рд╕ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдпрд╣ рдмрд╣реБрдд рдЬрд▓реНрджреА рдХрд░рддрд╛ рд╣реИ - рд╢реБрджреНрдз PHP рдореЗрдВ рд▓рд┐рдЦреЗ рдЧрдП рдХреЛрдб рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рд▓рдЧрднрдЧ 20 рдЧреБрдирд╛ рдЕрдзрд┐рдХ рддреЗрдЬреА рд╕реЗ рднрд░рддрд╛ рд╣реИред рд▓рдЧрднрдЧ 1-2 рдорд┐рд▓реАрд╕реЗрдХрдВрдб рдореЗрдВ рд╣рдЬрд╛рд░реЛрдВ рд╕рдВрд▓рдЧреНрди рдЧреБрдгреЛрдВ рдФрд░ рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд╕рд╛рде 1 рдПрдордмреА рдЖрдХрд╛рд░ рдХрд╛ рдПрдХ рдмрдбрд╝рд╛ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдмрдирддрд╛ рд╣реИред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рдХреЙрд▓:
$ doc = рдирдпрд╛ DOMDocument (); dom_varimport ( $ рдбреЙрдХ рд╕рд░рдгреА ( "some_key" => 111, 123 0.5 "рдПрд░рд┐рдпрд░" => рдПрд░реЗ ("1 рдП" => "1 рдП"), "obj" => (рдСрдмреНрдЬреЗрдХреНрдЯ) рд╕рд░рдгреА ("рдкреНрд░реЛрдк" => "рд╡реИрд▓"), рд╕рдЪ рд╣реИ, рдЭреВрдареА, "b" => рдЕрд╢рдХреНрдд, "рдЦрд╛рд▓реА" => рд╕рд░рдгреА (), ) "рд░реВрдЯ" // рд╡реИрдХрд▓реНрдкрд┐рдХ, "рд░реВрдЯ" рдХреЗ рд▓рд┐рдП рдЪреВрдХ ); $ doc-> formatOutput = true; рдЗрдХреЛ $ doc-> saveXML (); // рдпрд╣ рдХреЗрд╡рд▓ рдбрд┐рдмрдЧрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рд╣реИ: рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ, рдЖрдкрдХреЛ saveXML () рдХреЙрд▓ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрдЧреА
рдЗрд╕ XML рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЛ рдкреНрд░рд┐рдВрдЯ рдХрд░рддрд╛ рд╣реИ:
<? xml рд╕рдВрд╕реНрдХрд░рдг = "1.0"?> <рд░реВрдЯ> <some_key key = "some_key"> 111 </ some_key> <! - plain key = value -> <рдЖрдЗрдЯрдо рдХреБрдВрдЬреА = "0"> 123 </ рдЖрдЗрдЯрдо> <! - рд╕рдВрдЦреНрдпрд╛рддреНрдордХ рдХреБрдВрдЬреА "рдЖрдЗрдЯрдо" рдЯреИрдЧ рд╣реИрдВ -> <рдЖрдЗрдЯрдо рдХреБрдВрдЬреА = "1"> 0.5 </ рдЖрдЗрдЯрдо> <! - рджреЛрд╣рд░рд╛ -> <arr key = "arrest"> <! - nested array -> <рдЖрдЗрдЯрдо рдХреБрдВрдЬреА = "1a"> 1a </ рдЖрдЗрдЯрдо> <! - рдЕрдорд╛рдиреНрдп рдЯреИрдЧ рдирд╛рдо "рдЖрдЗрдЯрдо" -> рдореЗрдВ рдХрдирд╡рд░реНрдЯ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ </ рдЖрдЧрдорди> <obj key = "obj"> <! - рдиреЗрд╕реНрдЯреЗрдб рдСрдмреНрдЬреЗрдХреНрдЯ -> <рдкреНрд░реЛрдк рдХреБрдВрдЬреА = "рдкреНрд░реЛрдк"> рд╡реИрд▓ </ рдкреНрд░реЛрдк> </ Obj> <рдЖрдЗрдЯрдо рдХреБрдВрдЬреА = "2"> 1 </ рдЖрдЗрдЯрдо> <! - рд╕рддреНрдп 1 рд╕реЗ> рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рд╣реЛрддрд╛ рд╣реИ <рдЖрдЗрдЯрдо рдХреБрдВрдЬреА = "3" /> <! - рдЧрд▓рдд рдПрдХ рдЦрд╛рд▓реА рд╕реНрдЯреНрд░рд┐рдВрдЧ рдореЗрдВ рдХрдирд╡рд░реНрдЯ рдХрд░рддрд╛ рд╣реИ -> <b key = "b" /> <! - null рдПрдХ рдЦрд╛рд▓реА рд╕реНрдЯреНрд░рд┐рдВрдЧ -> рдореЗрдВ рднреА рдкрд░рд┐рд╡рд░реНрддрд┐рдд рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ <рдЦрд╛рд▓реА рдХреБрдВрдЬреА = "рдЦрд╛рд▓реА" /> <! - рдЦрд╛рд▓реА рд╕рд░рдгреА рдПрдХ рдЦрд╛рд▓реА рддрддреНрд╡ рд╣реИ -> </ рд░реВрдЯ>
рд╕рдм рдХреБрдЫ рдХрд╛рдлреА рдкрд╛рд░рджрд░реНрд╢реА рд╣реИ: рд╕рд░рдгреА рдХреБрдВрдЬреА рдФрд░ рдСрдмреНрдЬреЗрдХреНрдЯ рдЧреБрдг XML рддрддреНрд╡ рдмрди рдЬрд╛рддреЗ рд╣реИрдВ, рд╕рдВрднрд╡рддрдГ рдПрдХ рд╣реА рдирд╛рдо рдХреЗ рд╕рд╛рде (рд▓реЗрдХрд┐рди рдпрджрд┐ рдирд╛рдо XML рддрддреНрд╡ рдХреЗ рд▓рд┐рдП рдорд╛рдиреНрдп рдирд╣реАрдВ рд╣реИ, рддреЛ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп "рдЖрдЗрдЯрдо" рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ)ред рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХреНрд╕рдПрдордПрд▓ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЛ рдбреАрдмрдЧ рдХрд░рддреЗ рд╕рдордп рдкрдврд╝рдирд╛ рдмрд╣реБрдд рдЖрд╕рд╛рди рд╣реИ, рдпрд╣ рдмрд╣реБрдд рдХреЙрдореНрдкреИрдХреНрдЯ рд╣реИред рддреЛ, рд╣рдореЗрдВ рдЖрдЙрдЯрдкреБрдЯ рдкрд░ DOMDocument рдСрдмреНрдЬреЗрдХреНрдЯ рдорд┐рд▓рддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рд╣рдо рдкрд╣рд▓реЗ рд╕реЗ рд╣реА XSLTProcessor рдореЗрдВ рдкрд╛рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдПрдХреНрд╕рдПрдордПрд▓ рдЯреЗрдХреНрд╕реНрдЯреБрдЕрд▓ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд╣реАрдВ рднреА рдкреНрд░рдХрдЯ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ, рдЗрд╕реЗ рдХрд╣реАрдВ рднреА рдкрд╛рд░реНрд╕ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреИрд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ
рдПрдХреНрд╕рдЯреЗрдВрд╢рди рд╕реА рдореЗрдВ рд▓рд┐рдЦрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрд╕реЗ рдПрдХ рдорд╢реАрди рдкрд░ рд╕рдВрдХрд▓рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЬрд┐рд╕ рдкрд░ рдЬреАрд╕реАрд╕реА рдФрд░ php5-src (рдпрд╛ php5-devel) рдЬреИрд╕реЗ рдкреИрдХреЗрдЬ рд╕реНрдерд╛рдкрд┐рдд рд╣реИрдВред рдпрд╣ рдмрд┐рд▓реНрдХреБрд▓ рдбрд░рд╛рд╡рдирд╛ рдирд╣реАрдВ рд╣реИ:
git clone https://github.com/DmitryKoterov/dom_varimport.git рд╕реАрдбреА рдбреЛрдо_рд╡рд░рд┐рдордкреЛрд░реНрдЯ phpize рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдореЗрдХрдЕрдк рдкрд░реАрдХреНрд╖рдг рдХрд░реЗрдВ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ # рдпрд╛ рдХреЙрдкреА рдореЙрдбреНрдпреВрд▓ / dom_varimport.so рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ phpize --clean
"рдореЗрдХ рдЗрдирд╕реНрдЯреЙрд▓" рд╕реНрдЯреЗрдк рдХреЛ рдЫреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ: рдмрд╕ рдмрд╛рдЗрдирд░реА рдлрд╝рд╛рдЗрд▓ рдореЙрдбреНрдпреВрд▓ / dom_varimport.so рдХреЛ рд▓реЗрдВ рдФрд░ рдЗрд╕реЗ PHP рдПрдХреНрд╕рдЯреЗрдВрд╢рди (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, / usr / lib / php5) рдХреЗ рд╕рд╛рде рдПрдХ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдХреЙрдкреА рдХрд░реЗрдВ, рдЬрд┐рд╕рдореЗрдВ рдЕрдиреНрдп рдорд╢реАрдиреЗрдВ рднреА рд╢рд╛рдорд┐рд▓ рд╣реИрдВред рдЕрдВрдд рдореЗрдВ, рдЖрдкрдХреЛ /etc/php5/conf.d/dom_varimport.ini рдореЗрдВ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХрдиреЗрдХреНрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдФрд░ php5-fpm рдпрд╛ Apache рдХреЛ рдкреБрдирд░рд╛рд░рдВрдн рдХрд░рдирд╛ рд╣реЛрдЧрд╛:
рдПрдХреНрд╕рдЯреЗрдВрд╢рди = /usr/lib/php5/dom_varimport.so