public static SoftwareIdentity LoadHtml(string swidTagHtml) { using (var reader = new SgmlReader { DocType = "HTML", WhitespaceHandling = WhitespaceHandling.All, StripDocType = true, InputStream = new StringReader(swidTagHtml), CaseFolding = CaseFolding.ToLower }) { var document = XDocument.Load(reader); if (document.Root != null && document.Root.Name.LocalName == "html") { var swidTag = new SoftwareIdentity { Name = "Anonymous", Version = "1.0", VersionScheme = Schema.VersionScheme.MultipartNumeric }; var html = document.Root; var ns = html.Name.Namespace; var head = html.Element(ns + "head"); if (head != null) { var links = head.Elements(ns + "link"); foreach (var link in links) { var href = link.Attribute("href"); var rel = link.Attribute("rel"); if (href != null && rel != null) { var l = swidTag.AddLink(new Uri(href.Value), rel.Value); foreach (var attr in link.Attributes()) { l.SetAttribute(attr.Name, attr.Value); } } } } return(swidTag); } } return(null); }
public static SoftwareIdentity LoadHtml(string swidTagHtml) { using (var reader = new SgmlReader { DocType = "HTML", WhitespaceHandling = WhitespaceHandling.All, StripDocType = true, InputStream = new StringReader(swidTagHtml), CaseFolding = CaseFolding.ToLower }) { var document = XDocument.Load(reader); if (document.Root != null && document.Root.Name.LocalName == "html") { var swidTag = new SoftwareIdentity { Name = "Anonymous", Version = "1.0", VersionScheme = Schema.VersionScheme.MultipartNumeric }; var html = document.Root; var ns = html.Name.Namespace; var head = html.Element(ns + "head"); if (head != null) { var links = head.Elements(ns + "link"); foreach (var link in links) { var href = link.Attribute("href"); var rel = link.Attribute("rel"); if (href != null && rel != null) { var l = swidTag.AddLink(new Uri(href.Value), rel.Value); foreach (var attr in link.Attributes()) { l.SetAttribute(attr.Name, attr.Value); } } } } return swidTag; } } return null; }
public static SoftwareIdentity LoadJson(string swidTagJson) { var swidTag = new SoftwareIdentity(); Meta meta = null; var expanded = Normalize(swidTagJson); foreach (var member in expanded) { var memberName = member.Key; if (member.Value.Type == JTokenType.Array) { foreach (var element in member.Value.Cast<JObject>()) { var index = element.Index(); var value = element.Val(); if (index != null) { if (value != null) { if (memberName == JSonMembers.Meta) { meta = meta ?? swidTag.AddMeta(); meta.SetAttribute(index, value); } } else { var identity = IdentityIndex[memberName]; if (memberName == identity.JsonName || memberName == identity.ProperName ) { try { // create the new element var e = new XElement(identity.XmlName); swidTag.Element.Add(e); foreach (var property in element.Properties().Where(each => each.Name != "@index")) { e.SetAttribute(IdentityIndex[property.Name].XmlName, property.PropertyValue()); } // set the index of the element if (identity.Index != null) { e.SetAttribute(identity.Index, index); } } catch (Exception e) { e.Dump(); } } } } else { swidTag.SetAttribute(memberName.ToXName(), value); } } continue; } // Console.WriteLine("'{0}' -- '{1}'", memberName, member.Value.Type); } return swidTag; }
public MetadataIndexer(SoftwareIdentity swidtag) { _swidtag = swidtag; }
public static SoftwareIdentity LoadJson(string swidTagJson) { var swidTag = new SoftwareIdentity(); Meta meta = null; var expanded = Normalize(swidTagJson); foreach (var member in expanded) { var memberName = member.Key; if (member.Value.Type == JTokenType.Array) { foreach (var element in member.Value.Cast <JObject>()) { var index = element.Index(); var value = element.Val(); if (index != null) { if (value != null) { if (memberName == JSonMembers.Meta) { meta = meta ?? swidTag.AddMeta(); meta.SetAttribute(index, value); } } else { var identity = IdentityIndex[memberName]; if (memberName == identity.JsonName || memberName == identity.ProperName) { try { // create the new element var e = new XElement(identity.XmlName); swidTag.Element.Add(e); foreach (var property in element.Properties().Where(each => each.Name != "@index")) { e.SetAttribute(IdentityIndex[property.Name].XmlName, property.PropertyValue()); } // set the index of the element if (identity.Index != null) { e.SetAttribute(identity.Index, index); } } catch (Exception e) { e.Dump(); } } } } else { swidTag.SetAttribute(memberName.ToXName(), value); } } continue; } // Console.WriteLine("'{0}' -- '{1}'", memberName, member.Value.Type); } return(swidTag); }