2011-10-26 6 views
1

학교 임용을 위해 XML 뷰어를 코딩하고 있지만 파일 구조를 모른 채 XML 파일을로드하는 방법에 대한 단서가 없습니다.
파일을 읽은 후에 XML 구조를 목록 상자에 표시합니다.알 수없는 구조로 XML을 읽는 방법

그것은 학교 과제이고이 결과되어야한다 : 나는 완벽하게로드 할 수 있습니다 예를 들어 파일을 가지고하지만 난 임의의 파일을 붙어 XML Viewer

.

XmlDocument doc = new XmlDocument(); 
using(XmlReader xmlReader = XmlReader.Create("c:\\temp\\sites.xml")) 
{   
    //Load file 
    doc.Load(xmlReader); 
    XmlNode root = doc.DocumentElement; 

    foreach (XmlNode siteNode in root) 
    { 
     //Nodes 
     XmlNode URLNode = siteNode.FirstChild; 
     XmlNode EmailNode = siteNode.LastChild; 

     //Create site 
     Site site = new Site(URLNode.FirstChild.Value, EmailNode.FirstChild.Value); 

     //Add to list 
     sites.Add(site); 
    } 
    Console.WriteLine(sites.Count); 
} 
+2

하지만 무엇을하고 싶습니까? 속성이 있거나없는 노드 이름을 표시하려면 구조를 알 필요가 없습니다. 단순히 파일을 반복하고 이후의 데이터를 출력 할 수 있습니다. – Pateman

+0

당신이 읽고있는 XML의 구조/내용에 대해 이미 가정을하고있는 것처럼 보입니까? – 48klocs

답변

8
당신은 클래스에 데이터를 마이그레이션 할 수있는 방법이 필요 것 같은 구조에 대해 뭔가를 모르고 클래스 (당신의 Site 같은) 알려진 클래스로 XML 데이터를 켤 수하지 않을거야

생성자 매개 변수/속성/etc

XML 파일 자체를 보거나 검사하려는 경우 루트 요소 내부의 XmlNode 요소를 재귀 적으로 검사 할 수 있습니다.

XmlNodeChildNodes, AttributesValue와 같이이 작업을 수행 할 필요가하려는 속성을 모두 포함합니다.

0

작은 작업 스케줄러를 작성하는 동안 스케줄러, 특정 작업을 구현하는 정규 클래스 이름, 일부 텍스트 작업 컨텍스트 (XML) 등 세 가지 세트로 각 작업을 표현했습니다. 스케줄러가 리플렉션 및 알려진 어셈블리 위치를 사용하여 작업 클래스를 작성하는 동안 스케줄 된 시간에 작업을 실행해야하는 경우 XML 컨텍스트를 작업 생성자에게 전달 했으므로이를 처리하는 방법을 알고있었습니다.

마찬가지로 내에서 내에서 클래스를 정의 할 수 있다면 먼저 읽을 수 있습니다.

0

단지 뷰어, 이유는 단지 데이터 집합 또는 DataTable을로 XML을로드 한 후 데이터 그리드에 바인딩하지가 있다면

0

내가 당신이라면,이에 중점을두고, XML에 LINQ를 사용하려고 할 것 XElement에 의해 제공되는 기능 - 그것은 더 쉽고 더 쉽습니다. XML을 트래버스하기 위해 재귀 (Reed Copsey suggest)를 사용하는 것이 좋습니다.

관련 문제