using System.Collections.Generic;
using System.Linq;
using System.Xml.Linq;
namespace Developpez.Dotnet.Xml
{
///
/// Fournit des méthodes d'extension pour la manipulation de documents XML
///
public static class XmlExtensions
{
///
/// Renvoie la valeur d'un élément XML s'il n'est pas null, ou null si l'élément est null.
///
/// L'élément dont on veut obtenir la valeur
/// La valeur de l'élément s'il n'est pas null, ou null si l'élément est null.
public static string SafeValue(this XElement element)
{
return element.SafeValue(null);
}
///
/// Renvoie la valeur d'un élément XML s'il n'est pas null, ou la valeur par défaut spécifiée si l'élément est null.
///
/// L'élément dont on veut obtenir la valeur
/// La valeur à renvoyer si l'élément est null
/// La valeur de l'élément s'il n'est pas null, ou la valeur par défaut spécifiée si l'élément est null.
public static string SafeValue(this XElement element, string defaultValue)
{
return element != null ? element.Value : defaultValue;
}
///
/// Renvoie la valeur d'un attribut XML s'il n'est pas null, ou null si l'attribut est null.
///
/// L'attribut dont on veut obtenir la valeur
/// La valeur de l'attribut s'il n'est pas null, ou null si l'attribut est null.
public static string SafeValue(this XAttribute attribute)
{
return attribute.SafeValue(null);
}
///
/// Renvoie la valeur d'un attribut XML s'il n'est pas null, ou la valeur par défaut spécifiée si l'attribut est null.
///
/// L'attribut dont on veut obtenir la valeur
/// La valeur à renvoyer si l'attribut est null
/// La valeur de l'attribut s'il n'est pas null, ou la valeur par défaut spécifiée si l'attribut est null.
public static string SafeValue(this XAttribute attribute, string defaultValue)
{
return attribute != null ? attribute.Value : defaultValue;
}
///
/// Renvoie le premier élément enfant du conteneur avec le XName spécifié, ou null si le conteneur est null.
///
/// Le conteneur dans lequel chercher l'élément
/// Le nom de l'élément recherché
/// XElement qui correspond au XName spécifié, ou null si l'élément n'existe pas ou si le conteneur est null.
public static XElement SafeElement(this XContainer container, XName name)
{
return container != null ? container.Element(name) : null;
}
///
/// Renvoie une collection des éléments enfants de ce conteneur, ou une séquence vide si le conteneur est null.
///
/// Le conteneur dont on veut obtenir les éléments enfants
/// Une séquence de XElement contenant les éléments enfants de ce conteneur, ou une séquence vide si le conteneur est null.
public static IEnumerable SafeElements(this XContainer container)
{
return container != null ? container.Elements() : Enumerable.Empty();
}
///
/// Renvoie une collection des éléments enfants de ce conteneur avec le XName spécifié, ou une séquence vide si le conteneur est null.
///
/// Le conteneur dont on veut obtenir les éléments enfants
/// Le nom des éléments recherchés
/// Une séquence de XElement contenant les éléments enfants de ce conteneur, avec le XName spécifié, ou une séquence vide si le conteneur est null.
public static IEnumerable SafeElements(this XContainer container, XName name)
{
return container != null ? container.Elements(name) : Enumerable.Empty();
}
///
/// Renvoie l'attribut avec le XName spécifié, ou null si l'élement est null.
///
/// L'élément pour lequel on veut obtenir l'attribut
/// Le nom de l'attribut recherché
/// XAttribute qui a le XName spécifié, ou null si l'attribut n'existe pas ou si l'élément est null.
public static XAttribute SafeAttribute(this XElement element, XName name)
{
return element != null ? element.Attribute(name) : null;
}
///
/// Renvoie une collection des attributs de cet élément, ou une séquence vide si l'élément est null.
///
/// L'élément dont on veut obtenir les attributs
/// Une séquence de XAttribute contenant les attributs de cet élément, ou une séquence vide si l'élément est null.
public static IEnumerable SafeAttributes(this XElement element)
{
return element != null ? element.Attributes() : Enumerable.Empty();
}
///
/// Renvoie une des attributs avec le XName spécifié, ou une séquence vide si l'élément est null.
///
/// L'élément dont on veut obtenir les attributs
/// L'élément dont on veut obtenir les attributs
/// Une séquence de XAttribute contenant les attributs avec le XName spécifié, ou une séquence vide si l'élément est null.
public static IEnumerable SafeAttributes(this XElement element, XName name)
{
return element != null ? element.Attributes(name) : Enumerable.Empty();
}
}
}