private T CreateItem(XElement target) { if (target == null) { throw new InvalidOperationException("elements have been removed"); } T result = CursorCreater <T, XElement> .Create(_cursor, target); result.Build = _cursor.Build; return(result); }
public static T Attribute <T>(this ICursor <XElement> cursor, string localName) where T : ICursor <XAttribute> { XAttribute resultTarget = cursor.Target.Attribute(localName); //HACK: почему атрибуты не включены в пространство имен? if (resultTarget == null) { if (!cursor.Build) { throw new FormatException(string.Format("attribute `{0}' not found", localName)); } resultTarget = new XAttribute(localName, string.Empty); cursor.Target.Add(resultTarget); } T result = CursorCreater <T, XAttribute> .Create(cursor, resultTarget); result.Build = cursor.Build; return(result); }
public static T Element <T>(this ICursor <XElement> cursor, string localName) where T : ICursor <XElement> { XElement resultTarget = cursor.Target.Element(cursor.NameSpace + localName); if (resultTarget == null) { if (!cursor.Build) { throw new FormatException(string.Format("element `{0}' not found in {1}", cursor.NameSpace + localName, cursor.Target.GetAbsoluteXPath())); } resultTarget = new XElement(cursor.NameSpace + localName); cursor.Target.Add(resultTarget); } T result = CursorCreater <T, XElement> .Create(cursor, resultTarget); result.Build = cursor.Build; return(result); }