1

我有以下要解析的xml

<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 之外的元素。请帮忙。

4

1 回答 1

2

您在 config.xml 中打开的“ParametricTesting”标签与结束标签不同。纠正它,那条线就通过了。

此外,您不会关闭标签“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>
于 2013-07-31T12:07:56.140 回答