|
xml reader 와 richtext font color 지정하기
C#에서 xml문서를 읽고 원하는 데이타를 추출하는 프로그램을 만들었습니다. XmlTextReader 을 이용하여 xml을 읽고 해당 tagname을 찾아 출력하는 간단한 예제입니다. 또한 richtextbox에 font을 이용하여 원하는 색상을 지정하여 출력합니다. richtextbox의 확장 클래스를 만들어 색상지정과 폰트속성을 지정합니다. 공지사항을 띄울때 쓸 xml reader 프로그램인데 아직 데모입니다. 추후 개선할 사항이 나오면 더 수정하여야 하겠지만 xml reader할 경우 문제가 없을 거 같습니다. 참고로 xml에서 한글을 읽어 들일 때 깨지는 부분도 처리되어 있으니 확인하시면 됩니다.
Xml Reader v0.1 첨부파일을 참고하세요.
Xml 문서읽기 코드
xml 문서를 읽어 오는 부분입니다. 한글 깨지는 인코딩 부분도 처리되어 있습니다.
/// XML 파일 읽기
/// </summary>
private void ReadXML()
{
// 한글 깨지는 인코딩 부분 때문에 아래와 같이 처리합니다.
FileStream fStream = new FileStream("books.xml", FileMode.Open);
System.Text.Encoding enc = System.Text.Encoding.Default;
XmlParserContext context = new XmlParserContext(null, null, null, XmlSpace.Default, enc);
XmlTextReader textReader = new XmlTextReader(fStream, XmlNodeType.Element, context);
string tagname = "";
while (textReader.Read())
{
switch (textReader.NodeType)
{
case XmlNodeType.Element:
tagname = textReader.Name;
break;
case XmlNodeType.Text:
if (tagname.Equals("date"))
{
rBox.AppendText(string.Concat(textReader.Value.ToString()," \r\n"), Color.Red);
}
if (tagname.Equals("title"))
{
rBox.AppendText(string.Concat("내역: ", textReader.Value.ToString(), " \r\n"), Color.Blue);
}
if (tagname.Equals("note"))
{
rBox.AppendText(string.Concat("상세내역: ", textReader.Value.ToString(), " \r\n\r\n"), Color.Green);
}
break;
case XmlNodeType.EndElement:
//rBox.Text += textReader.Name.ToString() + " \r\n";
break;
}
}
textReader.Close();
}
}
RichTextBox의 색상 지정 확장클래스
RichTextBox 색상을 지정합니다.
#region RichTextBoxExtensions
public static class RichTextBoxExtensions
{
public static void AppendText(this RichTextBox box, string text, Color color)
{
box.SelectionStart = box.TextLength;
box.SelectionLength = 0;
box.SelectionColor = color;
box.AppendText(text);
box.SelectionColor = box.ForeColor;
}
public static void AppendText(this RichTextBox box, string text, Color color, FontStyle fontstyle)
{
box.SelectionStart = box.TextLength;
box.SelectionLength = 0;
box.SelectionColor = color;
box.AppendText(text);
box.SelectionColor = box.ForeColor;
Font currentFont = box.SelectionFont;
FontStyle newFontStyle = fontstyle;
box.SelectionFont = new Font(currentFont.FontFamily, currentFont.Size, newFontStyle);
}
}
#endregion
XML 문서 예제
xml 문서의 예제입니다.
<?xml version="1.0" encoding="utf-8" ?>
<!-- 메신져 공지사항 및 업데이트 내역을 작성합니다. -->
<messenger>
<notice>
<date>2011년07월27일</date>
<title>로그인시 조직도 속도개선</title>
<note>웹서비스의 속도개선</note>
</notice>
<notice>
<date>2011년07월25일</date>
<title>상단메뉴 기능 추가</title>
<note>alt키를 누르면 숨겨져 있던 메뉴가 나옵니다</note>
</notice>
</messenger>
|