private void AddElementToParent(IQuickXmlItem item, XElement element, XNamespace qualifiedNamespace) { if (item.Depth == 0) { throw new InvalidDataException("Only one root element allowed. Element '" + item.Name + "' is invalid, check leading whitespace."); } _elementLookup[item.Depth] = element; var parentElement = _elementLookup.LastOrDefault(i => i.Key < item.Depth).Value; if (qualifiedNamespace != null) { parentElement.Add(element); element.Name = qualifiedNamespace + element.Name.LocalName; } else { if (parentElement.Name.Namespace != XNamespace.None) { element.Name = parentElement.Name.Namespace + element.Name.LocalName; } parentElement.Add(element); } }
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 CreateComment(IQuickXmlItem item, XContainer document = null) { var comment = new XComment(item.Value); var parentElement = _elementLookup.LastOrDefault(i => i.Key < item.Depth).Value; if (parentElement != null) { parentElement.Add(comment); } else if (document != null) { document.Add(comment); } }
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 CreateComment(IQuickXmlItem item, XContainer document = null) { var comment = new XComment(item.Value); var parentElement = _elementLookup.LastOrDefault(i => i.Key < item.Depth).Value; if (parentElement != null) parentElement.Add(comment); else if (document != null) document.Add(comment); }
private void AddElementToParent(IQuickXmlItem item, XElement element, XNamespace qualifiedNamespace) { if (item.Depth == 0) throw new InvalidDataException("Only one root element allowed. Element '" + item.Name + "' is invalid, check leading whitespace."); _elementLookup[item.Depth] = element; var parentElement = _elementLookup.LastOrDefault(i => i.Key < item.Depth).Value; if (qualifiedNamespace != null) { parentElement.Add(element); element.Name = qualifiedNamespace + element.Name.LocalName; } else { if (parentElement.Name.Namespace != XNamespace.None) element.Name = parentElement.Name.Namespace + element.Name.LocalName; parentElement.Add(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)); }