protected override DomNode ReplaceWithCore(DomNode other) { if (other == null) { throw new ArgumentNullException(nameof(other)); } if (other == this) { return(this); } throw DomFailure.CannotReplaceDocument(); }
internal static void VerifyLocalName(string argName, string value) { if (value == null) { throw new ArgumentNullException(argName); } if (value.Length == 0) { throw Failure.EmptyString(argName); } if (!Regex.IsMatch(value, @"\A#?[a-z]\S*\Z", RegexOptions.IgnoreCase)) { throw DomFailure.NotValidLocalName(argName); } }
public DomNode Append(DomNode child) { if (child == null) { return(this); } if (ChildNodes.IsReadOnly) { throw DomFailure.CannotAppendChildNode(); } ChildNodes.Add(child); return(this); }
// TODO Comparer should be by name private void InsertItem(int index, DomAttribute item) { int existing = IndexOf(item.Name); if (existing < 0) { } else if (Items[existing] == item) { return; } else { throw DomFailure.AttributeWithGivenNameExists(item.Name, nameof(item)); } _map.Add(item.Name, item); Items.Insert(index, item); }
public static string ConvertToString(object value) { var str = value as string; if (str != null) { return(str); } switch (value) { case double _: return(XmlConvert.ToString((double)value)); case float _: return(XmlConvert.ToString((float)value)); case decimal _: return(XmlConvert.ToString((decimal)value)); case bool _: return(XmlConvert.ToString((bool)value)); case DateTime _: return(XmlConvert.ToString((DateTime)value, XmlDateTimeSerializationMode.Utc)); case DateTimeOffset _: return(XmlConvert.ToString((DateTimeOffset)value)); case TimeSpan _: return(XmlConvert.ToString((TimeSpan)value)); case DomObject _: throw DomFailure.CannotUseAddWithDomObjects("value"); default: return(Convert.ToString(value)); } }
internal override void AssertCanAppend(DomNode node, DomNode willReplace) { DomNodeType nodeType = node.NodeType; switch (nodeType) { case DomNodeType.Attribute: case DomNodeType.Document: case DomNodeType.DocumentFragment: case DomNodeType.EntityReference: case DomNodeType.CDataSection: throw DomFailure.CannotAppendChildNodeWithType(nodeType); case DomNodeType.Text: if (string.IsNullOrWhiteSpace(node.TextContent)) { return; } throw DomFailure.CannotAppendNonWSText(); case DomNodeType.Element: var root = DocumentElement; if (root == null || root == node || root == willReplace) { return; } throw DomFailure.CannotHaveMultipleRoots(); case DomNodeType.Unspecified: case DomNodeType.Entity: case DomNodeType.ProcessingInstruction: case DomNodeType.Comment: case DomNodeType.DocumentType: case DomNodeType.Notation: return; } }
internal static T RequireFactoryGeneratedName <T>(Type type, Func <IDomNodeTypeProvider, Type, T> generator) { Type inputType = type; while (type != typeof(object)) { var fac = DomProviderFactory.ForProviderObject(type); if (fac != null) { var name = generator(fac.NodeTypeProvider, inputType); if (name != null) { return(name); } if (fac is DefaultDomProviderFactory) { break; } } type = type.BaseType; } throw DomFailure.CannotGenerateName(inputType); }
protected virtual DomObject SetNameCore(DomName name) { throw DomFailure.CannotSetName(); }