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






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 SetNodeValue( XmlNode 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 SetNodeBase64BinaryValue( XmlNode 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 SetNodeBase64EncodedValue( XmlNode 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
5.Adds the specified node to the end of the list of child nodes, of this node.
6.Gets an XmlAttributeCollection containing the attributes of this node.
7.Gets all the child nodes of the node.
8.Creates a duplicate of this node.
9.Creates an XPathNavigator for navigating this object.
10.Gets the first child of the node.
11.For each style iteration over the nodes in the XmlNode.
12.Looks up the closest xmlns declaration for the given namespace URI
13.Gets or sets the concatenated values of the node and all its child nodes.Gets or sets the concatenated values of the node and all its child nodes.
14.Inserts the specified node immediately after the specified reference node.
15.Inserts the specified node immediately before the specified reference node.
16.Gets the first child element with the specified Name.
17.Gets the last child of the node.
18.Gets the node immediately following this node.
19.Gets the markup representing this node and all its child nodes.
20.Adds node to the beginning of the list of child nodes
21.Gets the node immediately preceding this node.
22.Removes all the child nodes and/or attributes of the current node.
23.Removes specified child node.
24.Replaces the child node oldChild with newChild node.
25.Selects a list of nodes matching the XPath expression.
26.Select and display the value of all the ISBN attributes
27.Selects the first XmlNode that matches the XPath expression.
28.When overridden in a derived class, saves all the child nodes of the node to the specified XmlWriter.
29.Save the current node to the specified XmlWriter.