DOM Node Model creator.
Adds the visited element as a node model.
Mixing DOM and SAX
When used with SAX filtering, this visitor will construct a DOM Fragment of the visited
element. This allows DOM utilities to be used in a Streaming environment.
When 1+ model are nested inside each other, outer model will never contain data from the
inner model i.e. the same fragments will never cooexist inside two model.
Take the following message as an example:
<order id='332'>
<header>
<customer number="123">Joe</customer>
</header>
<order-items>
<order-item id='1'>
<product>1</product>
<quantity>2</quantity>
<price>8.80</price>
</order-item>
<order-item id='2'>
<product>2</product>
<quantity>2</quantity>
<price>8.80</price>
</order-item>
<order-item id='3'>
<product>3</product>
<quantity>2</quantity>
<price>8.80</price>
</order-item>
</order-items>
</order>
The
DomModelCreator can be configured to create model for the "order" and "order-item"
message fragments:
<resource-config selector="order,order-item">
<resource>org.milyn.delivery.DomModelCreator</resource>
</resource-config>
In this case, the "order" model will never contain "order-item" model data (order-item elements are nested
inside the order element). The in memory model for the "order" will simply be:
<order id='332'>
<header>
<customer number="123">Joe</customer>
</header>
<order-items />
</order>
Added to this is the fact that there will only ever be 0 or 1 "order-item" model in memory
at any given time, with each new "order-item" model overwriting the previous "order-item" model.
All this ensures that the memory footprint is kept to a minimum.