Set the value to the Element : XML Node « XML « C# / C Sharp

Home
C# / C Sharp
1.2D Graphics
2.Class Interface
3.Collections Data Structure
4.Components
5.Data Types
6.Database ADO.net
7.Design Patterns
8.Development Class
9.Event
10.File Stream
11.Generics
12.GUI Windows Form
13.Language Basics
14.LINQ
15.Network
16.Office
17.Reflection
18.Regular Expressions
19.Security
20.Services Event
21.Thread
22.Web Services
23.Windows
24.Windows Presentation Foundation
25.XML
26.XML LINQ
C# / C Sharp by API
C# / CSharp Tutorial
C# / CSharp Open Source
C# / C Sharp » XML » XML NodeScreenshots 
Set the value to the Element
 
#region License and Copyright
/*
 * Dotnet Commons Xml
 *
 *
 * This library is free software; you can redistribute it and/or modify it 
 * under the terms of the GNU Lesser General Public License as published by 
 * the Free Software Foundation; either version 2.1 of the License, or 
 * (at your option) any later version.
 *
 * This library is distributed in the hope that it will be useful, but 
 * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY 
 * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License 
 * for more details. 
 *
 * You should have received a copy of the GNU Lesser General Public License 
 * along with this library; if not, write to the 
 * Free Software Foundation, Inc., 
 * 59 Temple Place, 
 * Suite 330, 
 * Boston, 
 * MA 02111-1307 
 * USA 
 
 */
#endregion

using System;
using System.Collections;
using System.Collections.Specialized;
using System.Diagnostics;
using System.IO;
using System.Reflection;
using System.Text;
using System.Text.RegularExpressions;
using System.Xml;
using System.Xml.Xsl;
using System.Xml.Serialization;

//using Dotnet.Commons.Reflection;

namespace Dotnet.Commons.Xml
{
  
  ///  
  /// <summary>
  /// This utility class contains wrapper functions that help to ease the handling and 
    /// manipulation of Xml documents, such as adding an element, adding an attribute
    /// to an element, copying and cloning of nodes, etc.
  ///
  /// </summary>
  /// 
    
  public abstract class XmlUtils
  {
    /// -----------------------------------------------------------
    /// <summary>
    /// Set the value to the Element
    /// </summary>
    /// <param name="node">the node to set the value </param>
    /// <param name="nodeValue">Value to set</param>
    /// <exception cref="XmlException">
    ///    Thrown if XmlNode is not an element or node is 
    ///    not a text node (no child nodes)
    ///  </exception>
    /// -----------------------------------------------------------
    public static void SetNodeValueXmlNode node, object nodeValue )
    {  
      if (node == null)
        throw new ArgumentNullException("node");

      if (node.NodeType != XmlNodeType.Element)
        throw new XmlException("Node is not an element.");

      if (node.ChildNodes.Count > 0)
        throw new XmlException("Node is not a text node as it has child nodes.");

      node.AppendChild(node.OwnerDocument.CreateTextNode(nodeValue.ToString()));
    }

    /// ------------------------------------------------------------------
    /// <summary>
    /// Set the value to a node
    /// </summary>
    /// <param name="parentNode">parentNode to start search from</param>
    /// <param name="xpath">XPath to the child node</param>
    /// <param name="nodeValue">the new value to set to</param>
    /// <exception cref="ArgumentNullException">Thrown if parentNode is null</exception>
    /// <exception cref="ArgumentException">Thrown if no text node is found at the xpath provided.</exception>
    /// <exception cref="XmlException">Thrown if node to set the value is not a text node (ie. no child nodes)</exception>
    /// ------------------------------------------------------------------
    public static void SetNodeValue(XmlNode parentNode, 
                    string xpath, 
                    object nodeValue)
    {
      if (parentNode == null)
        throw new ArgumentNullException("parentNode");

      XmlNode childNode = parentNode.SelectSingleNode(xpath);
      
      if(childNode == null)
        throw new ArgumentException(String.Format("No node is not found at the path specified '{0}'", xpath)"xpath");
      
      if (childNode.ChildNodes.Count > 0)
        throw new XmlException("Child node is not a text node as it has child nodes.");

      childNode.InnerText = nodeValue.ToString();
      
    }

    /// -----------------------------------------------------------
    /// <summary>
    /// Set a blog of binary data encoded with Base64 to an XML element.
    /// </summary>
    /// <param name="node">the node to set the blog of data</param>
    /// <param name="byteArray">an array of bytes containing the actual data</param>
    /// <exception cref="XmlException">Thrown if XmlNode is not an element or 
    ///    node is not a text node (no child nodes)</exception>
    /// -----------------------------------------------------------
    public static void SetNodeBase64BinaryValueXmlNode node, byte[] byteArray )
    {
      if (node.NodeType != XmlNodeType.Element)
        throw new XmlException("Node is not an element.");

      if (node.ChildNodes.Count > 0)
        throw new XmlException("Node is not a text node as it has child nodes.");

      // Convet byte array into Base64 string
      string encodedData = Convert.ToBase64String(byteArray);
      
      node.AppendChild(node.OwnerDocument.CreateTextNode(encodedData));
    }


    /// -----------------------------------------------------------
    /// <summary>
    /// Encode a value to Base64 and set it to the node.
    /// </summary>
    /// <param name="node">the node to set the value</param>
    /// <param name="value">value to set to the node</param>
    /// <exception cref="XmlException">Thrown if XmlNode is not an element 
    /// or node is not a text node (no child nodes)</exception>
    /// -----------------------------------------------------------
    public static void SetNodeBase64EncodedValueXmlNode node, object value)
    {
      if (value is byte[])
        SetNodeBase64BinaryValue(node, (byte[])value);

      if (node.NodeType != XmlNodeType.Element)
        throw new XmlException("Node is not an element.");

      if (node.ChildNodes.Count > 0)
        throw new XmlException("Node is not a text node as it has child nodes.");

      // Convet byte array into Base64 string
      ASCIIEncoding encoding = new ASCIIEncoding();
      byte[] bytes = encoding.GetBytes(value.ToString());

      SetNodeBase64BinaryValue(node, bytes);      
    }
    }
}

   
  
Related examples in the same category
1.Create an element type XmlNode like text value
2.Get the Xml Text node value
3.Alphabetical sorting of the XmlNodes
4.Convert an XmlNode to an object
www.java2java.com | Contact Us
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.