本文整理汇总了C#中XmlReader.ReadElementContentAsync方法的典型用法代码示例。如果您正苦于以下问题:C# XmlReader.ReadElementContentAsync方法的具体用法?C# XmlReader.ReadElementContentAsync怎么用?C# XmlReader.ReadElementContentAsync使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类XmlReader
的用法示例。
在下文中一共展示了XmlReader.ReadElementContentAsync方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: ReadXmlAsync
/// <summary>
/// Asynchronously reads XML data into the current <see cref="AtomEntry"/>.
/// </summary>
/// <exception cref="InvalidDataException">
/// Thrown when an Invalid Data error condition occurs.
/// </exception>
/// <param name="reader">
/// The reader from which to read.
/// </param>
/// <returns>
/// A <see cref="Task"/> representing the operation.
/// </returns>
public async Task ReadXmlAsync(XmlReader reader)
{
Contract.Requires<ArgumentNullException>(reader != null, "reader");
this.Author = null;
this.Content = null;
this.Id = null;
this.Links = null;
this.Published = DateTime.MinValue;
this.Title = null;
this.Updated = DateTime.MinValue;
reader.Requires(await reader.MoveToDocumentElementAsync("entry"));
Dictionary<string, Uri> links = null;
await reader.ReadAsync();
while (reader.NodeType == XmlNodeType.Element)
{
string name = reader.Name;
switch (name)
{
case "title":
this.Title = await reader.ReadElementContentAsync(StringConverter.Instance);
break;
case "id":
this.Id = await reader.ReadElementContentAsync(UriConverter.Instance);
break;
case "author":
await reader.ReadAsync();
reader.EnsureMarkup(XmlNodeType.Element, "name");
this.Author = await reader.ReadElementContentAsync(StringConverter.Instance);
reader.EnsureMarkup(XmlNodeType.EndElement, "author");
await reader.ReadAsync();
break;
case "published":
this.Published = await reader.ReadElementContentAsync(DateTimeConverter.Instance);
break;
case "updated":
this.Updated = await reader.ReadElementContentAsync(DateTimeConverter.Instance);
break;
case "link":
if (links == null)
{
links = new Dictionary<string, Uri>();
}
var href = reader.GetRequiredAttribute("href");
var rel = reader.GetRequiredAttribute("rel");
links[rel] = UriConverter.Instance.Convert(href);
await reader.ReadAsync();
break;
case "content":
this.Content = await ParsePropertyValueAsync(reader, 0);
break;
default: throw new InvalidDataException(); // TODO: Diagnostics : unexpected start tag
}
}
reader.EnsureMarkup(XmlNodeType.EndElement, "entry");
await reader.ReadAsync();
if (links != null)
{
this.Links = new ReadOnlyDictionary<string, Uri>(links);
}
}
示例2: ReadXmlAsync
public async Task ReadXmlAsync(XmlReader reader)
{
Contract.Requires<ArgumentNullException>(reader != null, "reader");
if (reader.ReadState == ReadState.Initial)
{
await reader.ReadAsync();
if (reader.NodeType == XmlNodeType.XmlDeclaration)
{
await reader.ReadAsync();
}
}
else
{
reader.MoveToElement();
}
if (!(reader.NodeType == XmlNodeType.Element && reader.Name == "entry"))
{
throw new InvalidDataException(); // TODO: Diagnostics
}
var links = new Dictionary<string, Uri>();
this.Links = links;
await reader.ReadAsync();
while (reader.NodeType == XmlNodeType.Element)
{
string name = reader.Name;
switch (name)
{
case "title":
this.Title = await reader.ReadElementContentAsync(StringConverter.Instance);
break;
case "id":
this.Id = await reader.ReadElementContentAsync(UriConverter.Instance);
break;
case "author":
await reader.ReadAsync();
if (!(reader.NodeType == XmlNodeType.Element && reader.Name == "name"))
{
throw new InvalidDataException(); // TODO: Diagnostics
}
this.Author = await reader.ReadElementContentAsync(StringConverter.Instance);
if (!(reader.NodeType == XmlNodeType.EndElement && reader.Name == "author"))
{
throw new InvalidDataException(); // TODO: Diagnostics
}
await reader.ReadAsync();
break;
case "published":
this.Published = await reader.ReadElementContentAsync(DateTimeConverter.Instance);
break;
case "updated":
this.Updated = await reader.ReadElementContentAsync(DateTimeConverter.Instance);
break;
case "link":
string href = reader.GetAttribute("href");
if (string.IsNullOrWhiteSpace(href))
{
throw new InvalidDataException(); // TODO: Diagnostics
}
string rel = reader.GetAttribute("rel");
if (string.IsNullOrWhiteSpace(rel))
{
throw new InvalidDataException(); // TODO: Diagnostics
}
links[rel] = UriConverter.Instance.Convert(href);
await reader.ReadAsync();
break;
case "content":
this.Content = await ParsePropertyValueAsync(reader);
break;
default: throw new InvalidDataException(); // TODO: Diagnostics
}
//.........这里部分代码省略.........
示例3: ReadXmlAsync
public async Task ReadXmlAsync(XmlReader reader)
{
Contract.Requires<ArgumentNullException>(reader != null, "reader");
if (reader.ReadState == ReadState.Initial)
{
await reader.ReadAsync();
if (reader.NodeType == XmlNodeType.XmlDeclaration)
{
await reader.ReadAsync();
}
}
else
{
reader.MoveToElement();
}
if (!(reader.NodeType == XmlNodeType.Element && (reader.Name == "feed" || reader.Name == "entry")))
{
throw new InvalidDataException(); // TODO: Diagnostics
}
string rootElementName = reader.Name;
var entries = new List<AtomEntry>();
this.Entries = entries;
var links = new Dictionary<string, Uri>();
this.Links = links;
var messages = new List<Message>();
this.Messages = messages;
await reader.ReadAsync();
while (reader.NodeType == XmlNodeType.Element)
{
string name = reader.Name;
switch (name)
{
case "title":
this.Title = await reader.ReadElementContentAsync(StringConverter.Instance);
break;
case "id":
this.Id = await reader.ReadElementContentAsync(UriConverter.Instance);
break;
case "author":
await reader.ReadAsync();
if (!(reader.NodeType == XmlNodeType.Element && reader.Name == "name"))
{
throw new InvalidDataException(); // TODO: Diagnostics
}
this.Author = await reader.ReadElementContentAsync(StringConverter.Instance);
if (!(reader.NodeType == XmlNodeType.EndElement && reader.Name == "author"))
{
throw new InvalidDataException(); // TODO: Diagnostics
}
await reader.ReadAsync();
break;
case "generator":
string build = reader.GetAttribute("build");
if (build == null)
{
throw new InvalidDataException(); // TODO: Diagnostics
}
string version = reader.GetAttribute("version");
if (version == null)
{
throw new InvalidDataException(); // TODO: Diagnostics
}
this.GeneratorVersion = VersionConverter.Instance.Convert(string.Join(".", version, build));
await reader.ReadAsync();
break;
case "updated":
this.Updated = await reader.ReadElementContentAsync(DateTimeConverter.Instance);
break;
case "entry":
var entry = new AtomEntry();
//.........这里部分代码省略.........
示例4: ReadXmlAsync
/// <summary>
/// Asynchronously reads XML data into the current <see cref="AtomFeed"/>.
/// </summary>
/// <exception cref="InvalidDataException">
/// Thrown when an Invalid Data error condition occurs.
/// </exception>
/// <param name="reader">
/// The reader from which to read.
/// </param>
/// <returns>
/// A <see cref="Task"/> representing the operation.
/// </returns>
public async Task ReadXmlAsync(XmlReader reader)
{
Contract.Requires<ArgumentNullException>(reader != null, "reader");
this.Author = null;
this.Entries = null;
this.GeneratorVersion = null;
this.Id = null;
this.Links = null;
this.Messages = null;
this.Pagination = Pagination.None;
this.Title = null;
this.Updated = DateTime.MinValue;
reader.Requires(await reader.MoveToDocumentElementAsync("feed"));
var documentElementName = reader.Name;
List<AtomEntry> entries = null;
Dictionary<string, Uri> links = null;
List<Message> messages = null;
await reader.ReadAsync();
while (reader.NodeType == XmlNodeType.Element)
{
string name = reader.Name;
switch (name)
{
case "title":
this.Title = await reader.ReadElementContentAsync(StringConverter.Instance);
break;
case "id":
this.Id = await reader.ReadElementContentAsync(UriConverter.Instance);
break;
case "author":
await reader.ReadAsync();
reader.EnsureMarkup(XmlNodeType.Element, "name");
this.Author = await reader.ReadElementContentAsync(StringConverter.Instance);
reader.EnsureMarkup(XmlNodeType.EndElement, "author");
await reader.ReadAsync();
break;
case "generator":
// string build = reader.GetRequiredAttribute("build"); // TODO: Incorporate build number? Build number sometimes adds a fifth digit.
string version = reader.GetRequiredAttribute("version");
this.GeneratorVersion = VersionConverter.Instance.Convert(string.Join(".", version));
await reader.ReadAsync();
break;
case "updated":
this.Updated = await reader.ReadElementContentAsync(DateTimeConverter.Instance);
break;
case "entry":
var entry = new AtomEntry();
if (entries == null)
{
entries = new List<AtomEntry>();
}
entries.Add(entry);
await entry.ReadXmlAsync(reader);
break;
case "link":
var href = reader.GetRequiredAttribute("href");
var rel = reader.GetRequiredAttribute("rel");
if (links == null)
{
links = new Dictionary<string, Uri>();
}
links[rel] = UriConverter.Instance.Convert(href);
await reader.ReadAsync();
break;
//.........这里部分代码省略.........