Exemple #1
0
            /*********************************************************************/
            public void Clean(HtmlToXml objParser)
            {
                while (this.Children.Count > 0)
                {
                    Node objNode = this.Children[0];

                    // Remove text nodes at the beginning that are empty
                    if ((objNode is TextNode) && (objNode as TextNode).ToString().Trim() == "")
                    {
                        this.Children.RemoveAt(0);
                    }
                    else
                    {
                        break;
                    }
                }

                while (this.Children.Count > 0)
                {
                    Node objNode = this.Children[this.Children.Count - 1];

                    // Remove text nodes at the end that are empty
                    if ((objNode is TextNode) && (objNode as TextNode).ToString().Trim() == "")
                    {
                        this.Children.RemoveAt(this.Children.Count - 1);
                    }
                    else
                    {
                        break;
                    }
                }
            }
Exemple #2
0
        /*********************************************************************/
        protected virtual bool WriteElement(HtmlToXml objParser, Element objElement, Element objParent, StringBuilder sb, int iLevel)
        {
            switch (Allowed(objElement, objParent))
            {
            case ElementAction.Remove:
                return(false);

            case ElementAction.Allowed:
                return(objElement.Write(objParser, sb, iLevel));

            case ElementAction.Convert:
                // ??? Not yet implemented
                return(false);

            case ElementAction.PromoteChildren:
            default:
                break;
            }

            bool bEmpty = true;

            foreach (Node objNode in objElement.Children)
            {
                if (this.Write(objParser, objNode, objParent, sb, iLevel + 1))
                {
                    bEmpty = false;
                }
            }

            return(!bEmpty);
        }
Exemple #3
0
            /*********************************************************************/
            public override bool Write(HtmlToXml objParser, StringBuilder sb, int iLevel)
            {
                objParser.WriteIndentation(sb, iLevel);

                sb.Append(m_strText + objParser.NewLine);

                return(true);
            }
Exemple #4
0
        /*********************************************************************/
        public virtual bool Write(HtmlToXml objParser, Node objNode, Element objParent, StringBuilder sb, int iLevel)
        {
            if (objNode is Element)
            {
                return(WriteElement(objParser, objNode as Element, objParent, sb, iLevel));
            }

            return(objNode.Write(objParser, sb, iLevel));
        }
Exemple #5
0
            /*********************************************************************/
            public Element(HtmlToXml objParser, string strName)
            {
                m_strName = HtmlToXml.FormatName(strName, false);

                if (m_strName != "__" && m_strName == "")
                {
                    throw new Exception("Illegal Element name: \"" + strName + "\"");
                }

                m_strName   = strName;
                m_objParser = objParser;
            }
Exemple #6
0
            /*********************************************************************/
            public override bool Write(HtmlToXml objParser, StringBuilder sb, int iLevel)
            {
                objParser.WriteIndentation(sb, iLevel);

                // Remove duplicate spaces and replace newlines and tabs with spaces. Encode < and > and &
                string strText = m_strText;

                // Encode < and > and &
                strText = strText.Replace("&", "&amp;").Replace("<", "&lt;").Replace(">", "&gt;").Replace("\"", "&quot;").Trim();

                if (strText != "")
                {
                    sb.Append(strText);
                    return(true);
                }

                return(false);
            }
Exemple #7
0
            /*********************************************************************/
            public override bool Write(HtmlToXml objParser, StringBuilder sb, int iLevel)
            {
                bool bEmpty = true;

                string strAttributes = PackAttributes();

                if (strAttributes != "")
                {
                    bEmpty = false;
                }

                if (m_aChildren.Count > 0)
                {
                    string strBegin = "";

                    if (this.Name != "__")
                    {
                        strBegin = string.Format("<{0}{1}>" + m_objParser.NewLine, this.Name, strAttributes);
                    }

                    StringBuilder sbChildren = new StringBuilder();

                    foreach (Node objNode in this.Children)
                    {
                        if (m_objParser.Write(objParser, objNode, objNode.Parent, sbChildren, iLevel + 1))
                        {
                            bEmpty = false;
                        }
                    }

                    if (m_objParser.RemoveEmpties && bEmpty && !m_objParser.EmptiesAllowed(this))
                    {
                        return(false);
                    }

                    if (this.Name != "__")
                    {
                        m_objParser.WriteIndentation(sb, iLevel);
                        sb.Append(" " + strBegin);
                        sb.Append(sbChildren.ToString());
                        m_objParser.WriteIndentation(sb, iLevel);
                        sb.AppendFormat("</{0}> " + m_objParser.NewLine, this.Name);
                    }
                    else
                    {
                        sb.Append(" " + sbChildren.ToString() + " ");
                    }
                }
                else
                {
                    if (m_objParser.RemoveEmpties && bEmpty && !m_objParser.EmptiesAllowed(this))
                    {
                        return(false);
                    }

                    m_objParser.WriteIndentation(sb, iLevel);

                    sb.AppendFormat(" <{0}{1} /> " + m_objParser.NewLine, this.Name, strAttributes);
                }

                return(!bEmpty);
            }
Exemple #8
0
 /*********************************************************************/
 public Attribute(string strName, string strValue)
 {
     m_strName  = HtmlToXml.FormatName(strName, true);
     m_strValue = strValue;
 }
Exemple #9
0
 /*********************************************************************/
 public abstract bool Write(HtmlToXml objParser, StringBuilder sb, int iLevel);