Beispiel #1
0
        /// <summary>
        /// 속성값을 설정함.
        /// </summary>
        /// <param name="Html">HTML 문자열</param>
        /// <param name="AttrName">속성 이름</param>
        /// <param name="AttrValue">속성 값</param>
        /// <returns>속성값이 설정된 HTML 문자열</returns>
        public static string SetAttribute(string Html, string AttrName, string AttrValue)
        {
            string      Xml  = CHtml.ConvertHtmlToParsableXml(Html, true);
            XmlDocument XDoc = new XmlDocument();

            XDoc.LoadXml(Xml);
            XDoc.DocumentElement.SetAttribute(AttrName, AttrValue);
            return(XDoc.DocumentElement.OuterXml);
        }
Beispiel #2
0
        /// <summary>
        /// !!! <![CDATA[<p>제목</p> -> <p/>제목</p>로 변환되므로 완벽하지 않음.]]>
        /// HTML을 XML 형식으로 변경하기 위해 닫는 태그가 없는 HTML 태그인 <![CDATA[<p>]]> 태그 등을 <![CDATA[<p/>]]> 태그와 같이 변경함.
        /// </summary>
        /// <param name="Html">HTML 문자열</param>
        /// <param name="IsAddProcessingInstruction">"<![CDATA[<?xml version="1.0" encoding="UTF-8"?>]]>" 문자열을 추가할 지 여부</param>
        /// <returns>XML 형식으로 변환된 문자열</returns>
        /// <example>
        /// <code>
        /// </code>
        /// </example>
        public static string ConvertHtmlToParsableXml(string Html, bool IsAddProcessingInstruction)
        {
            Html = CHtml.ReplaceLtGtAmpersand(Html);

            string[] aTag = new string[] { "<img", "<p", "<br", "<hr", "<input" };

            //에러 나지 않게 3 Space를 넣음.
            for (int i = 0, i2 = Html.Length; i < i2; i++)
            {
                for (int j = 0, j2 = aTag.Length; j < j2; j++)
                {
                    string TagCur = aTag[j];

                    string s = Html.Substring(i, Math.Min(i2 - i, TagCur.Length));
                    if (string.Compare(s, TagCur, true) == 0)
                    {
                        int Pos = Html.IndexOf(">", i + TagCur.Length);
                        if (Pos != -1)
                        {
                            if (Html.Substring(Pos - 1, 1) != "/")
                            {
                                Html = Html.Substring(0, Pos) + "/" + Html.Substring(Pos);
                                //이미 시작 태그에 해당하는 마지막 태그를 고쳤으므로
                                //마지막 태그 다음으로 검사 위치를 옮김.
                                i = Pos + 2;
                                //"/"를 넣어 총길이가 하나 늘었으므로 i2를 하나 늘림.
                                i2++;
                            }
                        }
                    }
                }
            }

            if (IsAddProcessingInstruction)
            {
                Html = CConst.XmlHeaderUtf8 + "\r\n" + Html;
            }

            return(Html);
        }
Beispiel #3
0
 /// <summary>
 /// WebBrowser 컨트롤에 HTML 내용을 표시함
 /// </summary>
 /// <remarks>
 /// 폼의 Load 이벤트에서 다음 코드를 미리 실행해야만 이 함수를 호출할 때 에러가 발생하지 않음.
 /// webContent.Navigate("about:blank");
 /// </remarks>
 /// <param name="web">WebBrowser 컨트롤</param>
 /// <param name="Html">표시할 HTML</param>
 /// <param name="IsAllowHtmlTag">HTML 태그가 적용되게 할 것인지, <![CDATA[<, >]]> 등의 문자열 자체가 그대로 보이게 할 것인 지 여부.</param>
 /// <param name="Style">표시할 HTML에 적용될 스타일</param>
 /// <example>
 /// 다음은 radHtml, radText Radio 컨트롤, txtContent TextBox 컨트롤, webContent WebBrowser 컨트롤이 있는 경우,
 /// radHtml, radText를 선택하거나, txtContent에 새로운 내용을 입력할 때마다 webContent에 HTML 결과를 표시하는 예입니다.
 /// <code>
 /// private void frmBoardManage_Load(object sender, EventArgs e)
 /// {
 ///	 CCommon.ContentStyle = "font-family: 돋움,돋움체,Gulim,Arial; font-size: 12px; color:#000000; line-height:17px;  margin:0 0 0 0;";
 ///     webContent.Navigate("about:blank");
 /// }
 /// private void radText_CheckedChanged(object sender, EventArgs e)
 /// {
 ///     CHtml.ShowHtml(webContent, txtContent.Text, radHtml.Checked, CCommon.ContentStyle);
 /// }
 /// private void radHtml_CheckedChanged(object sender, EventArgs e)
 /// {
 ///     CHtml.ShowHtml(webContent, txtContent.Text, radHtml.Checked, CCommon.ContentStyle);
 /// }
 /// private void txtContent_TextChanged(object sender, EventArgs e)
 /// {
 ///     CHtml.ShowHtml(webContent, txtContent.Text, radHtml.Checked, CCommon.ContentStyle);
 /// }
 /// </code>
 /// </example>
 public static void ShowHtml(WebBrowser web, string Html, bool IsAllowHtmlTag, string Style)
 {
     Html = CHtml.ReplaceHtmlToShow(Html, IsAllowHtmlTag);
     ShowHtml(web, Html, Style);
 }