private XElement CreateElement(IQuickXmlItem item, ref XElement root)
        {
            XElement   element;
            XNamespace qualifiedNamespace = null;
            var        nameParts          = new PartName(item.Name);

            if (nameParts.IsTwoPart)
            {
                qualifiedNamespace = _namespacesLookup[nameParts.One];
                element            = new XElement(nameParts.Two);
            }
            else
            {
                element = new XElement(item.Name);
            }

            if (root == null)
            {
                root = element;
                _elementLookup[0] = root;
                return(element);
            }

            AddElementToParent(item, element, qualifiedNamespace);

            return(element);
        }
        private void AddAttribute(XElement element, IQuickXmlItem item)
        {
            if (element == null)
            {
                throw new InvalidDataException("Item of type " + item.Type + " found before first element.");
            }

            var nameParts = new PartName(item.Name);

            if (nameParts.IsTwoPart == false)
            {
                if (item.Name == Constants.Xmlns)
                {
                    element.Name = (XNamespace)item.Value + element.Name.LocalName;
                }
                else
                {
                    element.Add(new XAttribute(item.Name, item.Value));
                }
                return;
            }

            XNamespace ns;

            if (nameParts.One == Constants.Xmlns)
            {
                ns = item.Value.Trim();
                _namespacesLookup[nameParts.Two] = ns;
                element.Add(new XAttribute(XNamespace.Xmlns + nameParts.Two, item.Value));
                return;
            }

            if (_namespacesLookup.TryGetValue(nameParts.One, out ns) == false)
            {
                throw new InvalidDataException("Namespace definition not found for " + item.Name);
            }

            element.Add(new XAttribute(ns + nameParts.Two, item.Value));
        }
Esempio n. 3
0
        private XElement CreateElement(IQuickXmlItem item, ref XElement root)
        {
            XElement element;
            XNamespace qualifiedNamespace = null;
            var nameParts = new PartName(item.Name);

            if (nameParts.IsTwoPart)
            {
                qualifiedNamespace = _namespacesLookup[nameParts.One];
                element = new XElement(nameParts.Two);
            }
            else
                element = new XElement(item.Name);

            if (root == null)
            {
                root = element;
                _elementLookup[0] = root;
                return element;
            }

            AddElementToParent(item, element, qualifiedNamespace);

            return element;
        }
Esempio n. 4
0
        private void AddAttribute(XElement element, IQuickXmlItem item)
        {
            if (element == null)
                throw new InvalidDataException("Item of type " + item.Type + " found before first element.");

            var nameParts = new PartName(item.Name);

            if (nameParts.IsTwoPart == false)
            {
                if (item.Name == Constants.Xmlns)
                {
                    element.Name = (XNamespace) item.Value + element.Name.LocalName;
                }
                else
                    element.Add(new XAttribute(item.Name, item.Value));
                return;
            }

            XNamespace ns;

            if (nameParts.One == Constants.Xmlns)
            {
                ns = item.Value.Trim();
                _namespacesLookup[nameParts.Two] = ns;
                element.Add(new XAttribute(XNamespace.Xmlns + nameParts.Two, item.Value));
                return;
            }

            if (_namespacesLookup.TryGetValue(nameParts.One, out ns) == false)
                throw new InvalidDataException("Namespace definition not found for " + item.Name);

            element.Add(new XAttribute(ns + nameParts.Two, item.Value));
        }