File: src\Framework\MS\Internal\SystemXmlHelper.cs
Project: wpf\PresentationFramework.csproj (PresentationFramework)
//---------------------------------------------------------------------------
//
// <copyright file="SystemXmlHelper.cs" company="Microsoft">
//    Copyright (C) Microsoft Corporation.  All rights reserved.
// </copyright>
//
// Description: Helper methods for code that uses types from System.Xml.
//
//---------------------------------------------------------------------------
 
using System;
using System.Collections;
using System.ComponentModel;
using System.Globalization;
 
using System.Windows;
 
namespace MS.Internal
{
    internal static class SystemXmlHelper
    {
        // return true if the item is an XmlNode
        internal static bool IsXmlNode(object item)
        {
            SystemXmlExtensionMethods extensions = AssemblyHelper.ExtensionsForSystemXml();
            return (extensions != null) ? extensions.IsXmlNode(item) : false;
        }
 
        // return true if the item is an XmlNamespaceManager
        internal static bool IsXmlNamespaceManager(object item)
        {
            SystemXmlExtensionMethods extensions = AssemblyHelper.ExtensionsForSystemXml();
            return (extensions != null) ? extensions.IsXmlNamespaceManager(item) : false;
        }
 
        // if the item is an XmlNode, get the value corresponding to the given name
        internal static bool TryGetValueFromXmlNode(object item, string name, out object value)
        {
            SystemXmlExtensionMethods extensions = AssemblyHelper.ExtensionsForSystemXml();
            if (extensions != null)
            {
                return extensions.TryGetValueFromXmlNode(item, name, out value);
            }
 
            value = null;
            return false;
        }
 
        // create a comparer for an Xml collection (if applicable)
        internal static IComparer PrepareXmlComparer(IEnumerable collection, SortDescriptionCollection sort, CultureInfo culture)
        {
            SystemXmlExtensionMethods extensions = AssemblyHelper.ExtensionsForSystemXml();
            if (extensions != null)
            {
                return extensions.PrepareXmlComparer(collection, sort, culture);
            }
 
            return null;
        }
 
        // return true if parent is an empty XmlDataCollection.
        internal static bool IsEmptyXmlDataCollection(object parent)
        {
            SystemXmlExtensionMethods extensions = AssemblyHelper.ExtensionsForSystemXml();
            return (extensions != null) ? extensions.IsEmptyXmlDataCollection(parent) : false;
        }
 
        // when item is an XmlNode, get its tag name (using the target DO as context
        // for namespace lookups)
        internal static string GetXmlTagName(object item, DependencyObject target)
        {
            SystemXmlExtensionMethods extensions = AssemblyHelper.ExtensionsForSystemXml();
            return (extensions != null) ? extensions.GetXmlTagName(item, target) : null;
        }
 
        // find a node with the given string as its InnerText
        internal static object FindXmlNodeWithInnerText(IEnumerable items, object innerText, out int index)
        {
            index = -1;
            SystemXmlExtensionMethods extensions = AssemblyHelper.ExtensionsForSystemXml();
            return (extensions != null) ? extensions.FindXmlNodeWithInnerText(items, innerText, out index) : DependencyProperty.UnsetValue;
        }
 
        // get the InnerText of the given node
        internal static object GetInnerText(object item)
        {
            SystemXmlExtensionMethods extensions = AssemblyHelper.ExtensionsForSystemXml();
            return (extensions != null) ? extensions.GetInnerText(item) : null;
        }
    }
}