1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143
|
//------------------------------------------------------------
// Copyright (c) Microsoft Corporation. All rights reserved.
//------------------------------------------------------------
namespace System.ServiceModel.Syndication
{
using System.Collections.ObjectModel;
using System.Xml;
using System.Xml.Serialization;
using System.Runtime.Serialization;
using System.Globalization;
static class FeedUtils
{
public static string AddLineInfo(XmlReader reader, string error)
{
IXmlLineInfo lineInfo = reader as IXmlLineInfo;
if (lineInfo != null && lineInfo.HasLineInfo())
{
error = String.Format(CultureInfo.InvariantCulture, "{0} {1}", SR.GetString(SR.ErrorInLine, lineInfo.LineNumber, lineInfo.LinePosition), SR.GetString(error));
}
return error;
}
static internal Collection<SyndicationCategory> CloneCategories(Collection<SyndicationCategory> categories)
{
if (categories == null)
{
return null;
}
Collection<SyndicationCategory> result = new NullNotAllowedCollection<SyndicationCategory>();
for (int i = 0; i < categories.Count; ++i)
{
result.Add(categories[i].Clone());
}
return result;
}
static internal Collection<SyndicationLink> CloneLinks(Collection<SyndicationLink> links)
{
if (links == null)
{
return null;
}
Collection<SyndicationLink> result = new NullNotAllowedCollection<SyndicationLink>();
for (int i = 0; i < links.Count; ++i)
{
result.Add(links[i].Clone());
}
return result;
}
static internal Collection<SyndicationPerson> ClonePersons(Collection<SyndicationPerson> persons)
{
if (persons == null)
{
return null;
}
Collection<SyndicationPerson> result = new NullNotAllowedCollection<SyndicationPerson>();
for (int i = 0; i < persons.Count; ++i)
{
result.Add(persons[i].Clone());
}
return result;
}
static internal TextSyndicationContent CloneTextContent(TextSyndicationContent content)
{
if (content == null)
{
return null;
}
return (TextSyndicationContent)(content.Clone());
}
internal static Uri CombineXmlBase(Uri rootBase, string newBase)
{
if (string.IsNullOrEmpty(newBase))
{
return rootBase;
}
Uri newBaseUri = new Uri(newBase, UriKind.RelativeOrAbsolute);
if (rootBase == null || newBaseUri.IsAbsoluteUri)
{
return newBaseUri;
}
return new Uri(rootBase, newBase);
}
internal static Uri GetBaseUriToWrite(Uri rootBase, Uri currentBase)
{
Uri uriToWrite;
if (rootBase == currentBase || currentBase == null)
{
uriToWrite = null;
}
else if (rootBase == null)
{
uriToWrite = currentBase;
}
else
{
// rootBase != currentBase and both are not null
// Write the relative base if possible
if (rootBase.IsAbsoluteUri && currentBase.IsAbsoluteUri && rootBase.IsBaseOf(currentBase))
{
uriToWrite = rootBase.MakeRelativeUri(currentBase);
}
else
{
uriToWrite = currentBase;
}
}
return uriToWrite;
}
static internal string GetUriString(Uri uri)
{
if (uri == null)
{
return null;
}
if (uri.IsAbsoluteUri)
{
return uri.AbsoluteUri;
}
else
{
return uri.ToString();
}
}
static internal bool IsXmlns(string name, string ns)
{
return name == "xmlns" || ns == "http://www.w3.org/2000/xmlns/";
}
internal static bool IsXmlSchemaType(string name, string ns)
{
return name == "type" && ns == "http://www.w3.org/2001/XMLSchema-instance";
}
}
}
|