Mvp.Xml Library: Common module

The Common module includes a set of commonly useful classes in the Mvp.Xml.Common, Mvp.Xml.Common.Serialization, Mvp.Xml.Common.XPath and Mvp.Xml.Common.Xsl namespaces, which extend the .NET functionality available through the System.Xml and related namespaces.

The full Common module API documentation can found at http://www.xmllab.net/mvpxml.

The following is a list of key features in no particular order, a short explanation and a link to its corresponding full explanation:

Mvp.Xml.Common namespace:

Mvp.Xml.Common.XPath namespace:

Mvp.Xml.Common.Xsl namespace:

  • New CharacterMappingXmlWriter - an XmlWriter implementation able to substitute characters appearing in text or attribute nodes. For character mapping semantics see XSLT 2.0.
  • MvpXslTransform - extends capabilities of the XslCompiledTransform class by adding support for transforming into XmlReader, built-in vast collection of EXSLT extention functions, multiple outputs, XHTML output mode, XSLT 2.0 character maps and transforming of IXPathNavigable along with XmlResolver. Also MvpXslTransform class provides new improved XSL transformation API by introducing concepts of IXmlTransform interface, XmlInput and XmlOutput. See HOW TO: Pipeline XSLT Transformations in .NET 2.0 Applications
  • XslReader - provides an efficient way to read results of an XSLT transformation via an XmlReader API. Due to architectural and performance reasons the XslCompiledTransform class doesn't support transforming to an XmlReader as obsolete XslTransform class did and XslReader's goal is to supplement such functionality. See HOW TO: Pipeline XSLT Transformations in .NET 2.0 Applications

Mvp.Xml.Common.Serialization namespace:

  • XmlSerializerCache - allows to work around the (assembly leak problem in the XmlSerializer). The cache will inspect if it contains any previously cached instances that are compatible with the parameters passed to the various overloads to the GetSerializer method before constructing a new XmlSerializer instance. It canonicalizes the parameter list to minimize the number of serializer objects in the cache

Last edited Jul 3, 2007 at 5:39 AM by olegt, version 2

Comments

schavez70 Jan 3, 2011 at 4:06 PM 
looking for help with IndexingXPathNavigator.

I have a large XML Document with Structure simular to
<OptGroup_SMDETSEMIANNUAL>
<SMDETSEMIANNUAL>
<_Location_>East Hall</_Location_>
<_Area_>Floor 03</_Area_>
<_Item_>Smoke Detector - SemiAnnual</_Item_>
<_SerialNr_> </_SerialNr_>
<_AssetNr_>-</_AssetNr_>
<_Mfr_>WALTER KIDDE</_Mfr_>
<_ModelNr_> </_ModelNr_>
<Sens>Pass</Sens>
<Sens_Answer2>----</Sens_Answer2>
<Sens_datetime_/>
<Visual>Pass</Visual>
<Visual_Answer2>----</Visual_Answer2>
<Visual_datetime_/>
<FunctSmoke>Pass</FunctSmoke>
<FunctSmoke_Answer2>----</FunctSmoke_Answer2>
<_FunctSmoke_datetime_>12/5/2010 10:53:07 AM</_FunctSmoke_datetime_>
</SMDETSEMIANNUAL>
</OptGroup_SMDETSEMIANNUAL>
<OptGroup_PHONESETSEMIANNUAL>
<PHONESETSEMIANNUAL>
<_Location_>Western end</_Location_>
<_Area_>Basement</_Area_>
<_Item_>Phone Set - SemiAnnual</_Item_>
<_SerialNr_> </_SerialNr_>
<_AssetNr_>-</_AssetNr_>
<_Mfr_>ANGUS FIRE ARMOUR</_Mfr_>
<_ModelNr_> </_ModelNr_>
<Visual>Pass</Visual>
<Visual_Answer2>----</Visual_Answer2>
<Visual_datetime_/>
<FunctEVAC>Pass</FunctEVAC>
<FunctEVAC_Answer2>----</FunctEVAC_Answer2>
<_FunctEVAC_datetime_>12/2/2010 11:43:30 AM</_FunctEVAC_datetime_>
</PHONESETSEMIANNUAL>
</OptGroup_PHONESETSEMIANNUAL>

I have tried to index it using IndexedXpathNavigator.AddKey
However it only seems to be able to return one node set that matches the "use" key... What I need it to do is returen ALL nodes that just match the Key.

For example if I assign the following keys:

IndexedXpathNavigator.AddKey("GroupKey"," //OptGroup_PHONESETSEMIANNUAL//PHONESETSEMIANNUAL", "PHONESETSEMIANNUAL");

IndexedXpathNavigator.AddKey("GroupKey"," //OptGroup_SMDETSEMIANNUAL//SMDETSEMIANNUAL", "SMDETSEMIANNUAL");

I would like a way to to return All nodes for the key "GroupKey".... However when I run
IndexedXpathNavigator.Select("key(GroupKey,value)") it returns nothing because it is requiring a value... This value is dynamic and can be different for the entire group...

Any suggestions or help would be greatly appreciated!!!

Sincerely

Ernie