Posted: 11 Aug 2015 4:24 EDT Last activity: 6 Apr 2018 19:26 EDT
Parse XML creates blank page with pxobjclass for all nodes
We had faced issue after upgrading from 6.1 sp2 to 7.1.7 that calling Apply-Parse-XML populates blank page with pxobjclass for all the nodes in the Parse XML rule. Earlier, we observed that only one node was populated that contained XML data.
We got around this issue by adding DASS, switchToOldAssembler. One thing I noticed is that 6.1 uses DOM parser and 7.1.7 SAX. Is there any major improvement that we would lose after going back to 6.1 parser? Which parser is better in performance? If 7.1 parser has better performance then we will need to change our logic in all our activities. Are there any other major bugs/change in behavior with 7.1.7 parser?
**Moderation Team has archived post**
This post has been archived for educational purposes. Contents and links will no longer be updated. If you have the same/similar question, please write a new post.
You are concerned about blank nodes with just pxObjClass in them even though your actual XML data is mapped to just one node. So, there really is no issue with regards to mapping XML data using the new parse XML assembly. Let us know if our understanding is incorrect. Can you please share, how this affects the logic in your activities. Are you checking for empty pages in your activities?
With regards to the two assemblies’ comparison, it depends on various factors such as the size of the XML you are mapping, how much of that XML data do you really want to map to Clipboard, does the XML contain type-substitutable elements, etc. There are cases in which the new assembly fares better than the old while in some other cases, it is vice-versa. It is incorrect to say the only difference between 6.1 and 7.1 assemblies is DOM vs SAX. 7.1 assembly fetches data from Clipboard on-demand.
Do you have an issue where XML Data is not getting mapped to Clipboard using the new assembly?
Yes, we are using ifpageExists in our activities after parsing and in 7.X as it creates blank nodes for all, the first step is always resolved. There are many such instances I found. Before changing the logic for all our instances to use 7.X parser, we have below queries
SwithToOldAssembler DASS works but we need to know if new parser has better performance? And also need to know if the new parser has advantages or new features that do not come with 6.X parser?
New parser performs better if you are mapping just a subset of the entire data. For example, if your XML contains 1000 nodes out of which you are interested in just 5-10, then the new parser performs better provided you don’t do a Page-Copy and instead copy only those portions of data that you would require in your business layer. The old parser used to copy data from all 1000 nodes into the Integration layer though your business layer might need only a small subset of it. So, if the your requirement is to copy the entire XML data from Integration layer to your business layer, it doesn’t matter whether you use the old assembly or the new one.
PS: What I mentioned above is only applicable if the you have followed best practices and separated out integration layer and business (case/work) layer in your application design. If the Parse XML rule is configured to map XML data directly onto the business layer, we can assume you are interested in the entire XML data and so it shouldn’t matter if you used the old parser or the new one.