return GetColumn (name) != null;\r
}\r
\r
- public DataColumn GetColumn (string name)
- {
- foreach (DataColumn col in Elements)
- if (col.ColumnName == name)
- return col;
- foreach (DataColumn col in Attributes)
- if (col.ColumnName == name)
- return col;
- if (SimpleContent != null && name == SimpleContent.ColumnName)
- return SimpleContent;
- if (PrimaryKey != null && name == PrimaryKey.ColumnName)
- return PrimaryKey;
- return null;
- }
-
- public void RemoveElementColumn (string name)
- {
- foreach (DataColumn col in Elements) {
- if (col.ColumnName == name) {
- Elements.Remove (col);
- return;
- }
- }
- }
+ public DataColumn GetColumn (string name)\r
+ {\r
+ foreach (DataColumn col in Elements)\r
+ if (col.ColumnName == name)\r
+ return col;\r
+ foreach (DataColumn col in Attributes)\r
+ if (col.ColumnName == name)\r
+ return col;\r
+ if (SimpleContent != null && name == SimpleContent.ColumnName)\r
+ return SimpleContent;\r
+ if (PrimaryKey != null && name == PrimaryKey.ColumnName)\r
+ return PrimaryKey;\r
+ return null;\r
+ }\r
+\r
+ public void RemoveElementColumn (string name)\r
+ {\r
+ foreach (DataColumn col in Elements) {\r
+ if (col.ColumnName == name) {\r
+ Elements.Remove (col);\r
+ return;\r
+ }\r
+ }\r
+ }\r
}\r
\r
internal class XmlDataInferenceLoader\r
{\r
- const string XmlnsNS = "http://www.w3.org/2000/xmlns/";\r
-\r
public static void Infer (DataSet dataset, XmlDocument document, XmlReadMode mode, string [] ignoredNamespaces)\r
{\r
new XmlDataInferenceLoader (dataset, document, mode, ignoredNamespaces).ReadXml ();\r
bool hasText = false;\r
\r
foreach (XmlAttribute attr in el.Attributes) {\r
- if (attr.NamespaceURI == XmlnsNS)\r
+ if (attr.NamespaceURI == XmlConstants.XmlnsNS)\r
continue;\r
- if (ignoredNamespaces.Contains (attr.NamespaceURI))\r
+ if (ignoredNamespaces != null &&\r
+ ignoredNamespaces.Contains (attr.NamespaceURI))\r
continue;\r
\r
hasAttributes = true;\r
XmlElement cel = n as XmlElement;\r
string childLocalName = XmlConvert.DecodeName (cel.LocalName);\r
\r
- switch (GetElementMappingType (cel)) {\r
+ switch (GetElementMappingType (cel, ignoredNamespaces)) {\r
case ElementMappingType.Simple:\r
InferColumnElement (table, cel);\r
break;\r
return col;\r
}\r
\r
- private ElementMappingType GetElementMappingType (XmlElement el)\r
+ private static ElementMappingType GetElementMappingType (\r
+ XmlElement el, ArrayList ignoredNamespaces)\r
{\r
foreach (XmlAttribute attr in el.Attributes) {\r
- if (attr.NamespaceURI == XmlnsNS)\r
+ if (attr.NamespaceURI == XmlConstants.XmlnsNS)\r
continue;\r
- if (ignoredNamespaces.Contains (attr.NamespaceURI))\r
+ if (ignoredNamespaces != null && ignoredNamespaces.Contains (attr.NamespaceURI))\r
continue;\r
return ElementMappingType.Complex;\r
}\r
\r
for (XmlNode n = el.NextSibling; n != null; n = n.NextSibling)\r
if (n.NodeType == XmlNodeType.Element && n.LocalName == el.LocalName)\r
- return GetElementMappingType (n as XmlElement) == ElementMappingType.Complex ? ElementMappingType.Complex : ElementMappingType.Repeated;\r
+ return GetElementMappingType (\r
+ n as XmlElement,\r
+ ignoredNamespaces)\r
+ == ElementMappingType.Complex ?\r
+ ElementMappingType.Complex :\r
+ ElementMappingType.Repeated;\r
\r
return ElementMappingType.Simple;\r
}\r
\r
private bool IsDocumentElementTable ()\r
{\r
- XmlElement top = document.DocumentElement;\r
+ return IsDocumentElementTable (\r
+ document.DocumentElement,\r
+ ignoredNamespaces);\r
+ }\r
+\r
+ internal static bool IsDocumentElementTable (XmlElement top,\r
+ ArrayList ignoredNamespaces)\r
+ {\r
foreach (XmlAttribute attr in top.Attributes) {\r
- if (attr.NamespaceURI == XmlnsNS)\r
+ if (attr.NamespaceURI == XmlConstants.XmlnsNS)\r
continue;\r
- if (ignoredNamespaces.Contains (attr.NamespaceURI))\r
+ if (ignoredNamespaces != null &&\r
+ ignoredNamespaces.Contains (attr.NamespaceURI))\r
continue;\r
// document element has attributes other than xmlns\r
return true;\r
XmlElement el = n as XmlElement;\r
if (el == null)\r
continue;\r
- if (this.GetElementMappingType (el) == ElementMappingType.Simple)\r
+ if (GetElementMappingType (el, ignoredNamespaces)\r
+ == ElementMappingType.Simple)\r
return true;\r
}\r
return false;\r
private bool IsPossibleColumnElement (XmlElement el)\r
{\r
foreach (XmlAttribute attr in el.Attributes) {\r
- if (attr.NamespaceURI == "http://www.w3.org/2000/xmlns/")\r
+ if (attr.NamespaceURI == XmlConstants.XmlnsNS)\r
continue;\r
return false;\r
}\r