윈폼 컨트롤에 XML문서를 읽어와 구조화 시키는 작업을

앞에서도 했고 이 정리도 그 연속이라 보면 되겠다.

 

이번엔 트리뷰이다.

예제에 쓰일 '일기장.xml'

 

이 XML문서를 이렇게 트리뷰에 적용 시킬것이다.

 

 

코딩

private void btnxml파일선택_Click(object sender, EventArgs e)
{
if (this.openFileDialog1.ShowDialog() == DialogResult.OK)
{
//열기 대화상자의 경로 설정
this.pathUri = this.openFileDialog1.FileName;
// 초기화 작업
Initialize();
XmlReader reader;
try
{
reader = this.CreateXmlReader();
if (this.checkBox1.Checked)
{
MessageBox.Show("Validation Document");
}
if (reader.NodeType == XmlNodeType.XmlDeclaration)
{
this.label1.Text=

string.Format( "{0} {1}",reader.Name,reader.Value);
}
//booklist 엘리먼트
while (reader.Read())//시작 엘리먼트가 나올때까지
{
if (reader.IsStartElement()) break;
}
MessageBox.Show(reader.Name);
if (reader.NodeType == XmlNodeType.Element)
{
TreeNode topNode = new TreeNode(reader.Name);
this.treeView1.Nodes.Add(topNode);
// booklist
Nextnode(reader, topNode);
this.treeView1.ExpandAll();
}
}
catch (Exception ex)
{
}
finally
{
}
}

public void Nextnode(XmlReader reader, TreeNode pNode)
{
while (reader.Read())
{
switch (reader.NodeType)
{
case XmlNodeType.Element:
string id = "";
if (reader.HasAttributes)
{
id = reader.GetAttribute("id");
}
TreeNode cNode = new TreeNode(reader.Name + "(" + id + ")");
pNode.Nodes.Add(cNode);
Nextnode(reader, cNode);
break;
case XmlNodeType.EndElement:
Nextnode(reader, pNode.Parent);
break;
case XmlNodeType.Text:
cNode = new TreeNode(reader.Value);
pNode.Nodes.Add(cNode);
Nextnode(reader, pNode);
break;
}
}
}

 

 

 

+ Recent posts