Return the content of the given XML element. - CSharp System.Xml

CSharp examples for System.Xml:XML Element

Description

Return the content of the given XML element.

Demo Code

/*/*from   ww w.  j  av  a  2s .  c  o m*/
 * ====================
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
 * 
 * Copyright 2008-2009 Sun Microsystems, Inc. All rights reserved.     
 * 
 * The contents of this file are subject to the terms of the Common Development 
 * and Distribution License("CDDL") (the "License").  You may not use this file 
 * except in compliance with the License.
 * 
 * You can obtain a copy of the License at 
 * http://opensource.org/licenses/cddl1.php
 * See the License for the specific language governing permissions and limitations 
 * under the License. 
 * 
 * When distributing the Covered Code, include this CDDL Header Notice in each file
 * and include the License file at http://opensource.org/licenses/cddl1.php.
 * If applicable, add the following below this CDDL Header, with the fields 
 * enclosed by brackets [] replaced by your own identifying information: 
 * "Portions Copyrighted [year] [name of copyright owner]"
 * ====================
 */
using System.Text;
using System.Xml;
using System;

public class Main{
        /// <summary>
        /// Return the content of the given element.
        /// </summary>
        /// <remarks>
        /// <p /> We will descend to an
        /// arbitrary depth looking for the first text node. <p /> Note that
        /// the parser may break what was originally a single string of pcdata into
        /// multiple adjacent text nodes. Xerces appears to do this when it
        /// encounters a '$' in the text, not sure if there is specified behavior, or
        /// if its parser specific. <p /> Here, we will congeal adjacent text nodes.
        /// <p /> We will NOT ignore text nodes that have only whitespace.
        /// </remarks>
        public static String GetContent(XmlElement e)
        {

            String content = null;

            if (e != null)
            {

                // find the first inner text node,
                XmlText t = FindText(e, false);
                if (t != null)
                {
                    // we have at least some text
                    StringBuilder b = new StringBuilder();
                    while (t != null)
                    {
                        b.Append(t.Data);
                        XmlNode n = t.NextSibling;

                        t = null;
                        if (n != null
                                && ((n.NodeType == XmlNodeType.Text) ||
                                        (n.NodeType == XmlNodeType.CDATA)))
                        {
                            t = (XmlText)n;
                        }
                    }
                    content = b.ToString();
                }
            }

            return content;
        }
}

Related Tutorials