////////////////////////////////////////////////////////////////////// /// <summary>Parses an xml node to create a Package object.</summary> /// <param name="node">Package node</param> /// <param name="parser">AtomFeedParser to use</param> /// <returns>the created Package object</returns> ////////////////////////////////////////////////////////////////////// public static Package ParsePackage(XmlNode node, AtomFeedParser parser) { Tracing.TraceCall(); Package package = null; Tracing.Assert(node != null, "node should not be null"); if (node == null) { throw new ArgumentNullException("node"); } object localname = node.LocalName; // Ensure that the namespace is correct. if (String.Compare(node.NamespaceURI, GCodeSearchParserNameTable.CSNamespace, true) == 0) { if (localname.Equals(GCodeSearchParserNameTable.EVENT_PACKAGE)) { package = new Package(); if (node.Attributes != null) { package.name = node.Attributes[ GCodeSearchParserNameTable.ATTRIBUTE_NAME].Value; package.uri = node.Attributes[ GCodeSearchParserNameTable.ATTRIBUTE_URI].Value; } else { throw new ArgumentNullException( BaseNameTable.gBatchNamespace + ":" + GCodeSearchParserNameTable.EVENT_PACKAGE + " must contain the attributes " + GCodeSearchParserNameTable.ATTRIBUTE_NAME + " and " + GCodeSearchParserNameTable.ATTRIBUTE_URI); } } } return package; }
////////////////////////////////////////////////////////////////////// /// <summary>parses the inner state of the element</summary> /// <param name="e">the Event arguments</param> /// <param name="parser">the atomFeedParser that called this</param> ////////////////////////////////////////////////////////////////////// public override void Parse(ExtensionElementEventArgs e, AtomFeedParser parser) { XmlNode eventNode = e.ExtensionElement; Tracing.TraceMsg(eventNode.LocalName); // Ensure that the namespace is correct. if (String.Compare(eventNode.NamespaceURI, GCodeSearchParserNameTable.CSNamespace, true) == 0) { // Parse a File Element if (eventNode.LocalName == GCodeSearchParserNameTable.EVENT_FILE) { file = File.ParseFile(eventNode, parser); e.DiscardEntry = true; } // Parse a Package Element else if ((eventNode.LocalName == GCodeSearchParserNameTable.EVENT_PACKAGE)) { package = Package.ParsePackage(eventNode, parser); e.DiscardEntry = true; } // Parse Match Elements else if (eventNode.LocalName == GCodeSearchParserNameTable.EVENT_MATCH) { matches.Add(Match.ParseMatch(eventNode, parser)); e.DiscardEntry = true; } } }