XmlHelper.cs source code in C# .NET

Source code for the .NET framework in C#

                        

Code:

/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / Orcas / QFE / wpf / src / Shared / MS / Internal / XmlHelper.cs / 1 / XmlHelper.cs

                            //---------------------------------------------------------------------------- 
//
// 
//    Copyright (C) Microsoft Corporation.  All rights reserved.
//  
//
// Description: 
//      Implements some helper functions for Xml nodes. 
//
//--------------------------------------------------------------------------- 

using System;
using System.Xml;
 
#if WINDOWS_BASE
    using MS.Internal.WindowsBase; 
#elif PRESENTATION_CORE 
    using MS.Internal.PresentationCore;
#elif PRESENTATIONFRAMEWORK 
    using MS.Internal.PresentationFramework;
#elif DRT
    using MS.Internal.Drt;
#else 
#error Attempt to use FriendAccessAllowedAttribute from an unknown assembly.
using MS.Internal.YourAssemblyName; 
#endif 

namespace MS.Internal 
{
    [FriendAccessAllowed]
    static class XmlHelper
    { 
        /// 
        /// Return true if the given item is an XML node. 
        ///  
        internal static bool IsXmlNode(object item)
        { 
            if (item != null)
            {
                Type type = item.GetType();
                return type.FullName.StartsWith("System.Xml", StringComparison.Ordinal) && IsXmlNodeHelper(item); 
            }
            else 
                return false; 
        }
 
        // separate function to avoid JIT-ing System.Xml until we have a good reason
        private static bool IsXmlNodeHelper(object item)
        {
            return item is System.Xml.XmlNode; 
        }
 
 
        /// 
        /// Return a string by applying an XPath query to an XmlNode. 
        /// 
        internal static string SelectStringValue(XmlNode node, string query)
        {
            return SelectStringValue(node, query, null); 
        }
 
 
        /// 
        /// Return a string by applying an XPath query to an XmlNode. 
        /// 
        internal static string SelectStringValue(XmlNode node, string query, XmlNamespaceManager namespaceManager)
        {
            string strValue; 
            XmlNode result;
 
            result = node.SelectSingleNode(query, namespaceManager); 

            if (result != null) 
            {
                strValue = XmlHelper.ExtractString(result);
            }
            else 
            {
                strValue = String.Empty; 
            } 

            return strValue; 
        }


        ///  
        /// Get a string from an XmlNode (of any kind:  element, attribute, etc.)
        ///  
        internal static string ExtractString(XmlNode node) 
        {
            string value = ""; 

            if (node.NodeType == XmlNodeType.Element)
            {
                for (int i = 0; i < node.ChildNodes.Count; i++) 
                {
                    if (node.ChildNodes[i].NodeType == XmlNodeType.Text) 
                    { 
                        value += node.ChildNodes[i].Value;
                    } 
                }
            }
            else
            { 
                value = node.Value;
            } 
            return value; 
        }
    } 
}

// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.
//---------------------------------------------------------------------------- 
//
// 
//    Copyright (C) Microsoft Corporation.  All rights reserved.
//  
//
// Description: 
//      Implements some helper functions for Xml nodes. 
//
//--------------------------------------------------------------------------- 

using System;
using System.Xml;
 
#if WINDOWS_BASE
    using MS.Internal.WindowsBase; 
#elif PRESENTATION_CORE 
    using MS.Internal.PresentationCore;
#elif PRESENTATIONFRAMEWORK 
    using MS.Internal.PresentationFramework;
#elif DRT
    using MS.Internal.Drt;
#else 
#error Attempt to use FriendAccessAllowedAttribute from an unknown assembly.
using MS.Internal.YourAssemblyName; 
#endif 

namespace MS.Internal 
{
    [FriendAccessAllowed]
    static class XmlHelper
    { 
        /// 
        /// Return true if the given item is an XML node. 
        ///  
        internal static bool IsXmlNode(object item)
        { 
            if (item != null)
            {
                Type type = item.GetType();
                return type.FullName.StartsWith("System.Xml", StringComparison.Ordinal) && IsXmlNodeHelper(item); 
            }
            else 
                return false; 
        }
 
        // separate function to avoid JIT-ing System.Xml until we have a good reason
        private static bool IsXmlNodeHelper(object item)
        {
            return item is System.Xml.XmlNode; 
        }
 
 
        /// 
        /// Return a string by applying an XPath query to an XmlNode. 
        /// 
        internal static string SelectStringValue(XmlNode node, string query)
        {
            return SelectStringValue(node, query, null); 
        }
 
 
        /// 
        /// Return a string by applying an XPath query to an XmlNode. 
        /// 
        internal static string SelectStringValue(XmlNode node, string query, XmlNamespaceManager namespaceManager)
        {
            string strValue; 
            XmlNode result;
 
            result = node.SelectSingleNode(query, namespaceManager); 

            if (result != null) 
            {
                strValue = XmlHelper.ExtractString(result);
            }
            else 
            {
                strValue = String.Empty; 
            } 

            return strValue; 
        }


        ///  
        /// Get a string from an XmlNode (of any kind:  element, attribute, etc.)
        ///  
        internal static string ExtractString(XmlNode node) 
        {
            string value = ""; 

            if (node.NodeType == XmlNodeType.Element)
            {
                for (int i = 0; i < node.ChildNodes.Count; i++) 
                {
                    if (node.ChildNodes[i].NodeType == XmlNodeType.Text) 
                    { 
                        value += node.ChildNodes[i].Value;
                    } 
                }
            }
            else
            { 
                value = node.Value;
            } 
            return value; 
        }
    } 
}

// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.
                        

Link Menu

Network programming in C#, Network Programming in VB.NET, Network Programming in .NET
This book is available now!
Buy at Amazon US or
Buy at Amazon UK