Esempio n. 1
0
        protected override DomNode ReplaceWithCore(DomNode other)
        {
            if (other == null)
            {
                throw new ArgumentNullException(nameof(other));
            }
            if (other == this)
            {
                return(this);
            }

            throw DomFailure.CannotReplaceDocument();
        }
Esempio n. 2
0
 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);
        }
Esempio n. 5
0
        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));
            }
        }
Esempio n. 6
0
        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;
            }
        }
Esempio n. 7
0
        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);
        }
Esempio n. 8
0
 protected virtual DomObject SetNameCore(DomName name)
 {
     throw DomFailure.CannotSetName();
 }