SlideShare ist ein Scribd-Unternehmen logo
1 von 33
Downloaden Sie, um offline zu lesen
Extbase
Object to XML Mapping
      Thomas Maroschik
Agenda

• XML basics
• Current state of EXT:palm
• Fail of EXT:palm
• Vision and the future
• Discussion
XML Basics
Key Technologies
• XML
• Schema
 • DTD
 • XSD
 • RelaxNG
• XPath / XQuery
• XSLT
XML Document
XML Namespace
XML Namespaces
XML Schema (DTD)
Deprecated, W3C Recommendation
XML Schema (XSD)
 Popular, W3C Recommendation
XML Schema (RelaxNG)
    Popular, Oasis/ISO Standard
XPath




      /bookshelf/book/title
    /bookshelf/book[1]/title
 /bookshelf/book/author/text()
/bookshelf/book[price<37]/title
XSLT
Current State of EXT:palm
Features
•   Generate XML schema (XSD) from annotated
    Domain Models
•   Serialize instances of Domain Models to XML
    document
•   Unserialize XML document to instances of
    Domain Models
•   merging of XML data with existing data from
    repositories by rules
•   Backend module
•   Scheduler task
•   No XML Namespaces yet
Example Domain Model
Example Palm Usage
Example Palm Merger Usage
Live Demo
Fail of EXT:palm
Inner Concept

• uses annotations for binding
• uses reflection for mapping
• serializing and unserializing is configurable
  by typoscript
• uses DOM for XML access
Serializer Concept

• iterates recursively over object
• builds DOMDocument directly
  => 2 in memory representations of data
Unserializer Concept

• iterates recursively over DOMDocument
• maps the data to an array
• array is mapped to object by property
  mapper
  => 3 in memory representations of data
Merger Concept
• can import/merge external data by
  unserializing xml to object
• fetches domain object from repository
• compares objects and applies changes by
  rules
  => 4 in memory representations of data
But why does this fail?
Reasons for Fail

• everything is defined global
• domain object cannot be serialized to
  different xml outputs
• configuration via TS in Extbase is flawed
• massive memory consumption
• reflection is quite slow
Conclusion



• currently just usable for limited usecases
Hacks to get it work
• import/merge all of a 2,2MB XML file takes
  of up to 2,5GB of memory
• 2 scheduler tasks
   • one that populates a jobqueue
   • one that does just a single import/merge
     at a time (import of 60 aggregate roots
     takes 60 Minutes)
Vision and the future
Concept
                             XML Schema


                         generate             use

            serialize                                     serialize

XML Data                            Binding                            Object
           unserialize                                   unserialize

                             use              generate



                                    Classes
Implementation Concept
 • binding will be done by a binding document instead
   of annotations
 => xml and objects may have very different
 structure
 => custom un-/serializers for data types
 => no global configuration anymore
 • compile binding to php
 => no reflection at runtime anymore
 • use xml reader/writer instead DOM
 => save memory and gain speed
How could the binding look like?




            Example from jibx.sourceforge.net
What do you think?
Thanks!
            Contact me via:
         tmaroschik@dfau.de
             @tom_noise

            Contribute via:
forge.typo3.org/projects/extension-palm/

Weitere ähnliche Inhalte

Was ist angesagt?

IWMW 2001: “XML and XSLT report
IWMW 2001: “XML and XSLT reportIWMW 2001: “XML and XSLT report
IWMW 2001: “XML and XSLT reportIWMW
 
QueryPath, Mash-ups, and Web Services
QueryPath, Mash-ups, and Web ServicesQueryPath, Mash-ups, and Web Services
QueryPath, Mash-ups, and Web ServicesMatt Butcher
 
Rust is for "Big Data"
Rust is for "Big Data"Rust is for "Big Data"
Rust is for "Big Data"Andy Grove
 
An introduction to Pincaster
An introduction to PincasterAn introduction to Pincaster
An introduction to PincasterFrank Denis
 
mule introduction to dataweave
mule   introduction to dataweavemule   introduction to dataweave
mule introduction to dataweavePaolo Mojica
 
20120606 Lazy Programmers Write Self-Modifying Code /or/ Dealing with XML Ord...
20120606 Lazy Programmers Write Self-Modifying Code /or/ Dealing with XML Ord...20120606 Lazy Programmers Write Self-Modifying Code /or/ Dealing with XML Ord...
20120606 Lazy Programmers Write Self-Modifying Code /or/ Dealing with XML Ord...David Horvath
 
Serialization and performance by Sergey Morenets
Serialization and performance by Sergey MorenetsSerialization and performance by Sergey Morenets
Serialization and performance by Sergey MorenetsAlex Tumanoff
 
NoSQL in Perspective
NoSQL in PerspectiveNoSQL in Perspective
NoSQL in PerspectiveJeff Smith
 

Was ist angesagt? (20)

Starting with MongoDB
Starting with MongoDBStarting with MongoDB
Starting with MongoDB
 
MongoDB
MongoDBMongoDB
MongoDB
 
Unit 2
Unit 2 Unit 2
Unit 2
 
Xml processors
Xml processorsXml processors
Xml processors
 
DOM-XML
DOM-XMLDOM-XML
DOM-XML
 
IWMW 2001: “XML and XSLT report
IWMW 2001: “XML and XSLT reportIWMW 2001: “XML and XSLT report
IWMW 2001: “XML and XSLT report
 
XML - SAX
XML - SAXXML - SAX
XML - SAX
 
QueryPath, Mash-ups, and Web Services
QueryPath, Mash-ups, and Web ServicesQueryPath, Mash-ups, and Web Services
QueryPath, Mash-ups, and Web Services
 
Rust is for "Big Data"
Rust is for "Big Data"Rust is for "Big Data"
Rust is for "Big Data"
 
AngularJS
AngularJSAngularJS
AngularJS
 
NoSQL
NoSQLNoSQL
NoSQL
 
Why CouchDB
Why CouchDBWhy CouchDB
Why CouchDB
 
An introduction to Pincaster
An introduction to PincasterAn introduction to Pincaster
An introduction to Pincaster
 
NoSQL
NoSQLNoSQL
NoSQL
 
Persisting Value Objects
Persisting Value ObjectsPersisting Value Objects
Persisting Value Objects
 
mule introduction to dataweave
mule   introduction to dataweavemule   introduction to dataweave
mule introduction to dataweave
 
20120606 Lazy Programmers Write Self-Modifying Code /or/ Dealing with XML Ord...
20120606 Lazy Programmers Write Self-Modifying Code /or/ Dealing with XML Ord...20120606 Lazy Programmers Write Self-Modifying Code /or/ Dealing with XML Ord...
20120606 Lazy Programmers Write Self-Modifying Code /or/ Dealing with XML Ord...
 
Serialization and performance by Sergey Morenets
Serialization and performance by Sergey MorenetsSerialization and performance by Sergey Morenets
Serialization and performance by Sergey Morenets
 
XSL - XML STYLE SHEET
XSL - XML STYLE SHEETXSL - XML STYLE SHEET
XSL - XML STYLE SHEET
 
NoSQL in Perspective
NoSQL in PerspectiveNoSQL in Perspective
NoSQL in Perspective
 

Andere mochten auch

Jacob och lenny golf!!! ;)
Jacob och lenny golf!!! ;)Jacob och lenny golf!!! ;)
Jacob och lenny golf!!! ;)jaco97
 
Tommy’s first baseball game
Tommy’s first baseball gameTommy’s first baseball game
Tommy’s first baseball gametinatorello
 
Fitness, fun and friends
Fitness, fun and friendsFitness, fun and friends
Fitness, fun and friendsoxleytl
 
Strategy presentation
Strategy presentationStrategy presentation
Strategy presentationoxleytl
 
E kit (chi)
E  kit (chi)E  kit (chi)
E kit (chi)maatbk
 
Jacob och lenny golf!!! ;)
Jacob och lenny golf!!! ;)Jacob och lenny golf!!! ;)
Jacob och lenny golf!!! ;)jaco97
 
Trabajo de ingles
Trabajo de inglesTrabajo de ingles
Trabajo de ingleslyliandlylu
 

Andere mochten auch (20)

Jacob och lenny golf!!! ;)
Jacob och lenny golf!!! ;)Jacob och lenny golf!!! ;)
Jacob och lenny golf!!! ;)
 
Tommy’s first baseball game
Tommy’s first baseball gameTommy’s first baseball game
Tommy’s first baseball game
 
AUA AGM 2011 Highlights
AUA AGM 2011 HighlightsAUA AGM 2011 Highlights
AUA AGM 2011 Highlights
 
Question 2
Question 2Question 2
Question 2
 
chiapas
chiapaschiapas
chiapas
 
Fitness, fun and friends
Fitness, fun and friendsFitness, fun and friends
Fitness, fun and friends
 
Strategy presentation
Strategy presentationStrategy presentation
Strategy presentation
 
F e r n a n d o
F e r n a n d oF e r n a n d o
F e r n a n d o
 
T bm
T bmT bm
T bm
 
Carta servicio reparacion de boom
Carta servicio reparacion de boomCarta servicio reparacion de boom
Carta servicio reparacion de boom
 
Question 6
Question 6Question 6
Question 6
 
Question 7
Question 7Question 7
Question 7
 
Pawerpoint wp
Pawerpoint wpPawerpoint wp
Pawerpoint wp
 
E kit (chi)
E  kit (chi)E  kit (chi)
E kit (chi)
 
AUA AGM 2012 Highlights
AUA AGM 2012 HighlightsAUA AGM 2012 Highlights
AUA AGM 2012 Highlights
 
Question 1
Question 1Question 1
Question 1
 
Jacob och lenny golf!!! ;)
Jacob och lenny golf!!! ;)Jacob och lenny golf!!! ;)
Jacob och lenny golf!!! ;)
 
Vi-rút máy vi tính
Vi-rút máy vi tínhVi-rút máy vi tính
Vi-rút máy vi tính
 
Trabajo de ingles
Trabajo de inglesTrabajo de ingles
Trabajo de ingles
 
July sep2011
July sep2011July sep2011
July sep2011
 

Ähnlich wie Extbase object to xml mapping

OPP2010 (Brussels) - Programming with XML in PL/SQL - Part 2
OPP2010 (Brussels) - Programming with XML in PL/SQL - Part 2OPP2010 (Brussels) - Programming with XML in PL/SQL - Part 2
OPP2010 (Brussels) - Programming with XML in PL/SQL - Part 2Marco Gralike
 
Data interchange integration, HTML XML Biological XML DTD
Data interchange integration, HTML XML Biological XML DTDData interchange integration, HTML XML Biological XML DTD
Data interchange integration, HTML XML Biological XML DTDAnushaMahmood
 
DSpace 4.2 XMLUI Theming
DSpace 4.2 XMLUI ThemingDSpace 4.2 XMLUI Theming
DSpace 4.2 XMLUI ThemingDuraSpace
 
Service Oriented Architecture -Unit II - Modeling databases in xml
Service Oriented Architecture -Unit II - Modeling databases in xml Service Oriented Architecture -Unit II - Modeling databases in xml
Service Oriented Architecture -Unit II - Modeling databases in xml Roselin Mary S
 
Hotsos 2013 - Creating Structure in Unstructured Data
Hotsos 2013 - Creating Structure in Unstructured DataHotsos 2013 - Creating Structure in Unstructured Data
Hotsos 2013 - Creating Structure in Unstructured DataMarco Gralike
 
XML-Extensible Markup Language
XML-Extensible Markup Language XML-Extensible Markup Language
XML-Extensible Markup Language Ann Joseph
 
Object Oriented PHP Overview
Object Oriented PHP OverviewObject Oriented PHP Overview
Object Oriented PHP OverviewLarry Ball
 
Yjs: A Real-Time Framework for Peer-to-peer Group Editing on Arbitrary Data T...
Yjs: A Real-Time Framework for Peer-to-peer Group Editing on Arbitrary Data T...Yjs: A Real-Time Framework for Peer-to-peer Group Editing on Arbitrary Data T...
Yjs: A Real-Time Framework for Peer-to-peer Group Editing on Arbitrary Data T...Nicolaescu Petru
 
Wpf-Xaml And Layout Basics
Wpf-Xaml And Layout BasicsWpf-Xaml And Layout Basics
Wpf-Xaml And Layout BasicsRobin Aggarwal
 
Xml serialization
Xml serializationXml serialization
Xml serializationRaghu nath
 

Ähnlich wie Extbase object to xml mapping (20)

Hibernate tutorial
Hibernate tutorialHibernate tutorial
Hibernate tutorial
 
OPP2010 (Brussels) - Programming with XML in PL/SQL - Part 2
OPP2010 (Brussels) - Programming with XML in PL/SQL - Part 2OPP2010 (Brussels) - Programming with XML in PL/SQL - Part 2
OPP2010 (Brussels) - Programming with XML in PL/SQL - Part 2
 
Unit iv xml dom
Unit iv xml domUnit iv xml dom
Unit iv xml dom
 
XML
XMLXML
XML
 
Data interchange integration, HTML XML Biological XML DTD
Data interchange integration, HTML XML Biological XML DTDData interchange integration, HTML XML Biological XML DTD
Data interchange integration, HTML XML Biological XML DTD
 
XML
XMLXML
XML
 
DSpace 4.2 XMLUI Theming
DSpace 4.2 XMLUI ThemingDSpace 4.2 XMLUI Theming
DSpace 4.2 XMLUI Theming
 
Service Oriented Architecture -Unit II - Modeling databases in xml
Service Oriented Architecture -Unit II - Modeling databases in xml Service Oriented Architecture -Unit II - Modeling databases in xml
Service Oriented Architecture -Unit II - Modeling databases in xml
 
XML and XPath details
XML and XPath detailsXML and XPath details
XML and XPath details
 
Hotsos 2013 - Creating Structure in Unstructured Data
Hotsos 2013 - Creating Structure in Unstructured DataHotsos 2013 - Creating Structure in Unstructured Data
Hotsos 2013 - Creating Structure in Unstructured Data
 
Ajax xml json
Ajax xml jsonAjax xml json
Ajax xml json
 
XML-Extensible Markup Language
XML-Extensible Markup Language XML-Extensible Markup Language
XML-Extensible Markup Language
 
Object Oriented PHP Overview
Object Oriented PHP OverviewObject Oriented PHP Overview
Object Oriented PHP Overview
 
Yjs: A Real-Time Framework for Peer-to-peer Group Editing on Arbitrary Data T...
Yjs: A Real-Time Framework for Peer-to-peer Group Editing on Arbitrary Data T...Yjs: A Real-Time Framework for Peer-to-peer Group Editing on Arbitrary Data T...
Yjs: A Real-Time Framework for Peer-to-peer Group Editing on Arbitrary Data T...
 
Wpf-Xaml And Layout Basics
Wpf-Xaml And Layout BasicsWpf-Xaml And Layout Basics
Wpf-Xaml And Layout Basics
 
Xml serialization
Xml serializationXml serialization
Xml serialization
 
XMl
XMlXMl
XMl
 
Xml parsing
Xml parsingXml parsing
Xml parsing
 
Xml
XmlXml
Xml
 
Introduce to XML
Introduce to XMLIntroduce to XML
Introduce to XML
 

Kürzlich hochgeladen

How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...gurkirankumar98700
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024Results
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...apidays
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEarley Information Science
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Paola De la Torre
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesSinan KOZAK
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Enterprise Knowledge
 
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsTop 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsRoshan Dwivedi
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 

Kürzlich hochgeladen (20)

How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen Frames
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsTop 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 

Extbase object to xml mapping

  • 1. Extbase Object to XML Mapping Thomas Maroschik
  • 2. Agenda • XML basics • Current state of EXT:palm • Fail of EXT:palm • Vision and the future • Discussion
  • 4. Key Technologies • XML • Schema • DTD • XSD • RelaxNG • XPath / XQuery • XSLT
  • 8. XML Schema (DTD) Deprecated, W3C Recommendation
  • 9. XML Schema (XSD) Popular, W3C Recommendation
  • 10. XML Schema (RelaxNG) Popular, Oasis/ISO Standard
  • 11. XPath /bookshelf/book/title /bookshelf/book[1]/title /bookshelf/book/author/text() /bookshelf/book[price<37]/title
  • 12. XSLT
  • 13. Current State of EXT:palm
  • 14. Features • Generate XML schema (XSD) from annotated Domain Models • Serialize instances of Domain Models to XML document • Unserialize XML document to instances of Domain Models • merging of XML data with existing data from repositories by rules • Backend module • Scheduler task • No XML Namespaces yet
  • 20. Inner Concept • uses annotations for binding • uses reflection for mapping • serializing and unserializing is configurable by typoscript • uses DOM for XML access
  • 21. Serializer Concept • iterates recursively over object • builds DOMDocument directly => 2 in memory representations of data
  • 22. Unserializer Concept • iterates recursively over DOMDocument • maps the data to an array • array is mapped to object by property mapper => 3 in memory representations of data
  • 23. Merger Concept • can import/merge external data by unserializing xml to object • fetches domain object from repository • compares objects and applies changes by rules => 4 in memory representations of data
  • 24. But why does this fail?
  • 25. Reasons for Fail • everything is defined global • domain object cannot be serialized to different xml outputs • configuration via TS in Extbase is flawed • massive memory consumption • reflection is quite slow
  • 26. Conclusion • currently just usable for limited usecases
  • 27. Hacks to get it work • import/merge all of a 2,2MB XML file takes of up to 2,5GB of memory • 2 scheduler tasks • one that populates a jobqueue • one that does just a single import/merge at a time (import of 60 aggregate roots takes 60 Minutes)
  • 28. Vision and the future
  • 29. Concept XML Schema generate use serialize serialize XML Data Binding Object unserialize unserialize use generate Classes
  • 30. Implementation Concept • binding will be done by a binding document instead of annotations => xml and objects may have very different structure => custom un-/serializers for data types => no global configuration anymore • compile binding to php => no reflection at runtime anymore • use xml reader/writer instead DOM => save memory and gain speed
  • 31. How could the binding look like? Example from jibx.sourceforge.net
  • 32. What do you think?
  • 33. Thanks! Contact me via: tmaroschik@dfau.de @tom_noise Contribute via: forge.typo3.org/projects/extension-palm/