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>");
}




2012/09/19

WebKnight 에서 Accept-Ranges 문제

환경 : IIS 7.5 / WebKnight 2.4

WebKnight 가 적용된 사이트에서 .flv 동영상 파일 출력시 Internet Explorer 은 최초 flv 출력후 이후 해당 페이지 재이동시 출력이 되지 않으며,  Chrome  최초 출력후 재이동시 출력되지 않으나 다시 요청시 출력,. FireFox 는 모두 정상적으로 출력 됨. 물론,. WebKnight 로딩을 해제하면 Explorer 도 출력에 전혀 문제가 없음.

Explorer 가 요청시에, 웹서버는 206(Partial Content) 코드를 반환.

IIS 에서 응답시에 Chrome / FireFfox 는 아래와 같이 Accept-Ranges:bytes  응답을 줘야 하지만,. Explorer 에 대해서는 해당 헤더값을 주지 않음.

Accept-Ranges:bytes
Content-Length:62247162
Content-Type:video/x-flv
Date:Wed, 19 Sep 2012 05:23:55 GMT
Etag:"f8adee757e95cd1:0"
Last-Modified:Tue, 18 Sep 2012 09:17:44 GMT
Server:Microsoft-IIS/7.5
X-Powered-By:ASP.NET

 

WebKnight  내부적으로 처리에 문제가 있는 것으로 추정은 되지만,. 확실하게 WebKnight 의 어떤 부분에서 문제가 되는지는 알기 어려운 상태로,.  임시 해결 방법으론 IIS 에서 강제로 Accept-Ranges 헤더를 출력하고록 헤더 응답값에 추가로 해결.

 

 


가장 많이 본 글