2011-09-09 5 views
-5

XML 파일을 읽는 방법을 만들었지 만 두 번 작동하지 않습니다. 파일 시작 부분에 포인터를 놓아야하지만 어떻게 찾지 못했습니다.XML 읽기 방법

using Microsoft.AnalysisServices.AdomdClient; 
using System.Diagnostics; 



namespace WindowsFormsApplication1 
{ 

    class Class { 
    private System.Xml.XmlReader XML_File; 
    public void DebugXML() 
     { 
      this.XML_File.Read(); 
      while (!this.XML_File.EOF) 
      { 
       Debug.WriteLine(this.XML_File.ReadOuterXml()); 
      } 
     } 


public Class() 
     { 
      AdomdConnection conn = new AdomdConnection("Data Source=MyComputer;InitialCatalog=Database"); 
      conn.Open(); 
      AdomdCommand cmd = new AdomdCommand("Select Hierarchize([Projects].[Project Branch].Levels(1).Members) DIMENSION PROPERTIES PARENT_UNIQUE_NAME, HIERARCHY_UNIQUE_NAME, CUSTOM_ROLLUP, UNARY_OPERATOR, KEY0 ON 0, Hierarchize({{{[Period Calculations].[Period].&[0]}, {[Period Calculations].[Period].&[1]}, {[Period Calculations].[Period].&[2]}, {[Period Calculations].[Period].&[3]}, {[Period Calculations].[Period].&[4]}, {[Period Calculations].[Period].&[5]}}}) DIMENSION PROPERTIES PARENT_UNIQUE_NAME, HIERARCHY_UNIQUE_NAME, CUSTOM_ROLLUP, UNARY_OPERATOR, KEY0 ON 1 FROM [ProjectControl] WHERE ([Measures].[WIP]) CELL PROPERTIES BACK_COLOR, CELL_ORDINAL, FORE_COLOR, FONT_NAME, FONT_SIZE, FONT_FLAGS, FORMAT_STRING, VALUE, FORMATTED_VALUE, UPDATEABLE", conn); 
      CellSet Cellules = cmd.ExecuteCellSet(); 
      this.XML_File = cmd.ExecuteXmlReader(); 
      DebugXML(); 
      DebugXML(); 
      conn.Close(); 
     } 
} 
+3

XML_File의 유형을 알려주지 않았거나 매번 개별적으로 읽지 않고 클래스에서 열어 두어야하는 이유는 무엇입니까? –

+0

'XmlReader'는 전진 전용 리더입니다. 여러 번 읽으려면 다른 구문을 사용해야합니다. –

+0

System.Xml.XmlReader XML_File; – TTT

답변

0

코드를 두 번 실행하면 두 번째로 anothe 프로세스에서 파일을 열었다는 예외가 표시됩니다.

그래서 당신이하지 않았다는 것을 의미합니다. 그래서 닫아라!

+0

물론, 그것을 시도했지만 그 뒤에 무거운 쿼리 그래서 매번 그것을 실행하지 않도록 싶습니다. – TTT

+0

?? 너 무슨 뜻이야? 뭐하고 싶어 ? 귀하의 질문과이 "무거운 질의"사이에 어떤 연관이 있습니까? –

+0

제가 제 질문을 구체화하고보다 구체적으로 말해서 웹 서비스를 사용하여 큐브 (Analysis Services)에서 데이터를 검색하고 싶습니다. XML 또는 Celldata를 어딘가에 내 MainApplication에서 액세스 할 수 있습니다. – TTT

0

또한 다음 예제가있는 Microsoft Support Article - How to read XML file by using Visual C#을 확인하십시오.

using System; 
using System.Xml; 

namespace ReadXMLfromFile 
{ 
    /// <summary> 
    /// Summary description for Class1. 
    /// </summary> 
    class Class1 
    { 
     static void Main(string[] args) 
     { 
      XmlTextReader reader = new XmlTextReader ("books.xml"); 
      while (reader.Read()) 
      { 
       switch (reader.NodeType) 
       { 
        case XmlNodeType.Element: // The node is an element. 
         Console.Write("<" + reader.Name); 
         Console.WriteLine(">"); 
         break; 
        case XmlNodeType.Text: //Display the text in each element. 
         Console.WriteLine (reader.Value); 
         break; 
        case XmlNodeType.EndElement: //Display the end of the element. 
         Console.Write("</" + reader.Name); 
         Console.WriteLine(">"); 
         break; 
       } 
      } 
      Console.ReadLine(); 
     } 
    } 
}