2012/10/17

c#, XML to HTML

xml 데이터를 파싱해서 필요한 부분만 뽑아서 웹에 출력하려고 했지만,. 서버에서 뽑아지는 xml 데이터 형식이 다양해서 일일히 스타일 만들기도 귀찮고 해서 그냥 xml 전체를 html 로 만들어서 보자는 목적으로 만든 코드. html 의 집합 목록 태그이므로 Tree 형식으로 보기는 그런데로..^^

XmlDocument doc = new XmlDocument();
doc.LoadXml(System.IO.File.ReadAllText("backup.xml", Encoding.UTF8));
sb.Append("<div id=\"xmlData\">");
foreach(XmlNode xn in doc.ChildNodes) {
    getChildNode(xn);
}
sb.Append("</div>");


static void getChildNode(XmlNode xn) {
    if (xn.NodeType == XmlNodeType.Text | xn.NodeType == XmlNodeType.CDATA) {
        sb.AppendLine(xn.Value);
        string x = xn.Value;
        if (x.StartsWith("<")) {
            XmlDocument xd = new XmlDocument();
            xd.LoadXml(x);
            foreach(XmlNode xn2 in xd.ChildNodes) {
                getChildNode(xn2);
            }
        }
    } else {
        sb.AppendLine(xn.Name);
        if (xn.Attributes != null) {
            if (xn.Attributes.Count > 0) {
                sb.AppendLine("<ul>");
                foreach(XmlAttribute xa in xn.Attributes) {
                    sb.AppendLine("<li>" + xa.Name + " : " + xa.Value + "</li>");
                }
                sb.AppendLine("</ul>");
            }
        }
    }
    // 하위노드 재귀
    sb.AppendLine("<ul>");
    foreach(XmlNode child in xn.ChildNodes) {
        sb.AppendLine("<li>");
        getChildNode(child);
        sb.AppendLine("</li>");
    }
    sb.AppendLine("</ul>");
}




가장 많이 본 글