/// <summary> /// Parses a mime map element. /// </summary> /// <param name="node">Element to parse.</param> /// <param name="parentId">Identifier for parent symbol.</param> /// <param name="parentType">Type that parentId refers to.</param> private void ParseMimeMapElement(XmlNode node, string parentId, MimeMapParentType parentType) { SourceLineNumberCollection sourceLineNumbers = Preprocessor.GetSourceLineNumbers(node); string id = null; string extension = null; string type = null; foreach (XmlAttribute attrib in node.Attributes) { if (0 == attrib.NamespaceURI.Length || attrib.NamespaceURI == this.schema.TargetNamespace) { switch (attrib.LocalName) { case "Id": id = this.Core.GetAttributeIdentifierValue(sourceLineNumbers, attrib); break; case "Extension": extension = this.Core.GetAttributeValue(sourceLineNumbers, attrib); break; case "Type": type = this.Core.GetAttributeValue(sourceLineNumbers, attrib); break; default: this.Core.UnexpectedAttribute(sourceLineNumbers, attrib); break; } } else { this.Core.UnsupportedExtensionAttribute(sourceLineNumbers, attrib); } } if (null == id) { this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name, "Id")); } if (null == extension) { this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name, "Extension")); } else if (0 < extension.Length) { if (!extension.StartsWith(".", StringComparison.Ordinal)) { this.Core.OnMessage(IIsErrors.MimeMapExtensionMissingPeriod(sourceLineNumbers, node.Name, "Extension", extension)); } } if (null == type) { this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name, "Type")); } foreach (XmlNode child in node.ChildNodes) { if (XmlNodeType.Element == child.NodeType) { if (child.NamespaceURI == this.schema.TargetNamespace) { this.Core.UnexpectedElement(node, child); } else { this.Core.UnsupportedExtensionElement(node, child); } } } if (!this.Core.EncounteredError) { Row row = this.Core.CreateRow(sourceLineNumbers, "IIsMimeMap"); row[0] = id; row[1] = (int)parentType; row[2] = parentId; row[3] = type; row[4] = extension; } }
/// <summary> /// Parses a mime map element. /// </summary> /// <param name="node">Element to parse.</param> /// <param name="parentId">Identifier for parent symbol.</param> /// <param name="parentType">Type that parentId refers to.</param> private void ParseMimeMapElement(XmlNode node, string parentId, MimeMapParentType parentType) { SourceLineNumberCollection sourceLineNumbers = this.core.GetSourceLineNumbers(node); string id = null; string extension = null; string type = null; foreach (XmlAttribute attrib in node.Attributes) { switch (attrib.LocalName) { case "Id": id = this.core.GetAttributeValue(sourceLineNumbers, attrib); break; case "Extension": extension = this.core.GetAttributeValue(sourceLineNumbers, attrib); break; case "Type": type = this.core.GetAttributeValue(sourceLineNumbers, attrib); break; default: this.core.UnexpectedAttribute(sourceLineNumbers, attrib); break; } } if (null == id) { this.core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name, "Id")); } if (null == extension) { this.core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name, "Extension")); } else if (CompilerCore.IllegalEmptyAttributeValue != extension) { if (!extension.StartsWith(".")) { this.core.OnMessage(WixErrors.MimeMapExtensionMissingPeriod(sourceLineNumbers, node.Name, "Extension", extension)); } } if (null == type) { this.core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name, "Type")); } foreach (XmlNode child in node.ChildNodes) { if (XmlNodeType.Element == child.NodeType) { this.core.UnexpectedElement(node, child); } } Row row = this.core.CreateRow(sourceLineNumbers, "IIsMimeMap"); row[0] = id; row[1] = (int)parentType; row[2] = parentId; row[3] = type; row[4] = extension; }