Загрузка XML значения дочерних узлов в переменных в C# - PullRequest
0 голосов
/ 02 февраля 2020

Я хочу значение xml дочерних узлов в отдельной переменной. Узел root - «Родительский», а основной - «Отчеты». Я написал оператор цикла для каждого главного узла «Отчеты» и извлек значения для дочерних узлов.

Я могу загрузить xml (со значениями) в l oop, но извлекает приведенную ниже ошибку при назначении значения дочерних узлов переменной avariable.

"Произошло необработанное исключение типа 'System.NullReferenceException' in project.exe "

c# код

 public Service1()
        {
            InitializeComponent();

            foreach (string file in Directory.EnumerateFiles(Project.Constants.PATHNAME, "*.xml"))
            {
                XElement ReportData = XElement.Load(file);
                var Reportinfo = ReportData.Elements("Reports");
                foreach (var Reports in Reportinfo.Nodes())
                {
                    var ReportName = Reports.Document.Element("ReportName").Value;
                    var DBExecution = Reports.Document.Element("DBExecution").Value;
                    var DBName = Reports.Document.Element("DBName").Value;
                }

                var obj = new DatabaseAction("connection1");
                var result = obj.ExecuteCommandQuery("select * from sometable");

            }

        }

Вот это xml:

<?xml version="1.0" encoding="utf-8"?>
<Parent>
<Reports name="Report1">
  <ReportName>xzy</ReportName>
  <DBExecution>Yes</DBExecution>
  <DBName>sqldb0001</DBName>
  <OutputFileName>xyz_output</OutputFileName>
  <OutputFilePath>123</OutputFilePath>
</Reports>
<Reports name="Report2">
  <ReportName>asdf</ReportName>
  <DBExecution>false</DBExecution>
  <DBName>sqldb0002231</DBName>
  <OutputFileName>xyzasdf_output</OutputFileName>
  <OutputFilePath>123333</OutputFilePath>
</Reports>
</Parent>

Пожалуйста, дайте мне знать, где я go не так? Спасибо

1 Ответ

1 голос
/ 03 февраля 2020

Вот ваше решение. В нем показано, как перебирать фрагменты Reports и получать значения отдельных дочерних элементов в al oop.

c#

void Main()
{
    const string file = @"e:\Temp\Manivannan.xml";

    string ReportName = string.Empty;
    string DBExecution = string.Empty;
    string DBName = string.Empty;

    XDocument ReportData = XDocument.Load(file);
    foreach (var Reports in ReportData.Descendants("Reports"))
    {
        ReportName = Reports.Element("ReportName").Value;
        DBExecution = Reports.Element("DBExecution").Value;
        DBName = Reports.Element("DBName").Value;
    }
}
...