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)); }
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)); }