2013-07-31 3 views
1

я следующий XML должен быть проанализированXml разбор в C# 4.0

<config> 
<ParametricTesting>Y</ParametericTesting> 
<FunctionalTesting>Y</FunctionalTesting> 
<Utilities>N</Utilities> 
<CommonApi>N</CommonApi> 
<ClientData>N</ClientData> 
<DataSourceTest>Y<DataSourceTest> 
<Excel> 
<ExcelFilePath>myexcel1.xlsx</ExcelFilePath> 
</Excel> 
<Access> 
<AccessDB> </AccessDB> 
</Access> 
<Sql> 
<SqlConnectionString> </SqlConnectionString> 
</Sql> 
<RunnerConsole>N</RunnerConsole> 
<Schedular>N</Schedular> 
</config> 

Я использую XmlReader для чтения XML, но так как я новичок в C#, так что я не знаю, почему код ломается после чтение второго тега, т. е. ParametericTesting.

код:

string ConfigXml = Path.GetFullPath("Config.xml"); 
XmlReader xmlReader = XmlReader.Create(ConfigXml); 

while (xmlReader.Read()) { 
    if ((xmlReader.NodeType== XmlNodeType.Element) && xmlReader.Name.Equals("ParametricTesting")) { 
     // TODO : write code relevant for parametric testing 
     xmlReader.Read(); 
    } 
    else if ((xmlReader.NodeType== XmlNodeType.Element)&& xmlReader.Name.Equals("DataSourceTest")) { 
     string Datasource = xmlReader.GetAttribute("DataSourceTest"); 

     if (Datasource.Equals("Y")) { 
      if (xmlReader.Name.Equals("Excel") && (xmlReader.NodeType == XmlNodeType.Element)) { 
       string excelfile = xmlReader.GetAttribute("ExcelFilePath"); 
       string ExcelPath = Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location) + "\\Files\\" + excelfile; 
       objExcel.DataSourceName = excelfile; 
       objExcel.Open(); 
      } 
     } 
     xmlReader.Read(); 
    } 
    xmlReader.Read(); 
} 

Мой код не читает элемент за parametricTesting. Пожалуйста помоги.

ответ

2

вы открываете тег «ParametricTesting» в файле config.xml отличается от закрывающего тега. исправить его, и эта линия проходит.

также, вы не закрыть тег «DataSourceTest»

здесь неподвижная XML:

<config> 
    <ParametricTesting>Y</ParametricTesting> 
    <FunctionalTesting>Y</FunctionalTesting> 
    <Utilities>N</Utilities> 
    <CommonApi>N</CommonApi> 
    <ClientData>N</ClientData> 
    <DataSourceTest>Y</DataSourceTest> 
    <Excel> 
    <ExcelFilePath>myexcel1.xlsx</ExcelFilePath> 
    </Excel> 
    <Access> 
    <AccessDB> </AccessDB> 
    </Access> 
    <Sql> 
     <SqlConnectionString> </SqlConnectionString> 
    </Sql> 
    <RunnerConsole>N</RunnerConsole> 
    <Schedular>N</Schedular> 
</config> 
+0

Спасибо много она работала ой такая глупая ошибка, но теперь я не могу принести значение атрибута правильно. Я получаю его правильно через уже написанный код или некоторые изменения необходимо сделать. – priya

+0

@priya, вот я здесь для :) –