Sam_gaik Ответов: 2

Как читать XML-файл и отображать его в datagridview на языке C#


Как прочитать все xml - узлы и отобразить их в Datagridview...
.
.
Спасибо в adv..

Что я уже пробовал:

XmlReader xmlFile;
xmlFile = XmlReader.Create("G:\\Campaign_20062400.xml", new XmlReaderSettings());
          DataSet ds = new DataSet();
          ds.ReadXml(xmlFile);
          dataGridView1.DataSource = ds.Tables[0];





вот мой xml-файл..


<CAMPAIGN_00>

<DIP_1>
<stSetpoints>
<iInputCatsPerTooling>8</iInputCatsPerTooling>
<rInputSPSubstrateWeight>
<fMin>126</fMin>
<fMax>154</fMax>
<fTgt>140</fTgt>
</rInputSPSubstrateWeight>
<rInputSPWetUptakeWeight>
<fMin>8.1000004</fMin>
<fMax>9.8999996</fMax>
<fTgt>9</fTgt>
</rInputSPWetUptakeWeight>
<rCalculatedSPWetUptakePerc>
<fMin>90</fMin>
<fMax>109.99999</fMax>
<fTgt>100</fTgt>
</rCalculatedSPWetUptakePerc>
</stSetpoints>
<sDipStatus>GOOD</sDipStatus>
<rSubstrateWeight>1144</rSubstrateWeight>
<rWetScale1>1217.9</rWetScale1>
<rWetUptakeWeight>73.900024</rWetUptakeWeight>
<rWetUptakePercent>102.63892</rWetUptakePercent>
</DIP_1>

<DIP_2>
<stSetpoints>
<iInputCatsPerTooling>8</iInputCatsPerTooling>
<rInputSPSubstrateWeight>
<fMin>126</fMin>
<fMax>154</fMax>
<fTgt>140</fTgt>
</rInputSPSubstrateWeight>
<rInputSPWetUptakeWeight>
<fMin>8.1000004</fMin>
<fMax>9.8999996</fMax>
<fTgt>9</fTgt>
</rInputSPWetUptakeWeight>
<rCalculatedSPWetUptakePerc>
<fMin>90</fMin>
<fMax>109.99999</fMax>
<fTgt>100</fTgt>
</rCalculatedSPWetUptakePerc>
</stSetpoints>
<sDipStatus>GOOD</sDipStatus>
<rSubstrateWeight>1143.4</rSubstrateWeight>
<rWetScale1>1222.1</rWetScale1>
<rWetUptakeWeight>78.699951</rWetUptakeWeight><rWetUptakePercent>109.30549</rWetUptakePercent>
</DIP_2>
</CAMPAIGN_00>





it not work as expected..suggest any idea..

2 Ответов

Рейтинг:
1

Sandeep Mewara

Цитата:
Чтобы прочитать как данные, так и схему, используйте одну из перегрузок ReadXML, включающую параметр mode, и установите его значение в ReadSchema.

Исходя из того, что вы пытаетесь сделать, вам не нужно использовать XMLReader для чтения содержимого файла. Вместо этого используйте файл непосредственно для набора данных ReadXML метод.

Он должен работать с:
DataSet dataSet = new DataSet();  
dataSet.ReadXml(@"G:\Campaign_20062400.xml");  
dataGridView1.DataSource = dataSet.Tables[0];  

Ссылка: Метод DataSet.ReadXml (System.Data) | Microsoft Docs[^]


Вот еще несколько ссылок, которые могут вам помочь:
Читать, анализировать и импортировать XML-файл в Windows компонент datagridview на C# и VB.Net[^]
Чтение XML - данных в набор данных- Visual Studio | Microsoft Docs[^]


Sam_gaik

он только читал <dip_1>..
нужно прочитать все узлы

Sandeep Mewara

Читает все. Это индекс таблицы здесь, который управляет им. Вы можете использовать соответственно

dataGridView1.DataSource = набор данных.Таблицы[0];

для dip_2, dataGridView1.Источник данных = набор данных.Таблицы[1];

Sam_gaik

Это не сработает...

Sandeep Mewara

Используйте отладчик, смотрите, что находится в наборе данных, назначая его сетке. Вы должны увидеть в нем два стола. Выберите тот, который вы хотите связать.

Sam_gaik

а как назначить обе таблицы..?

Sandeep Mewara

Если вы хотите показать данные обеих таблиц в одной сетке, то сопоставьте их. Вы не можете показать две таблицы в качестве источника. Вам нужно объединить данные в одну таблицу, а затем использовать ее в качестве источника.

Sam_gaik

thnks для идеи...еще одна мысль.. в случае множественной таблицы как это сделать?

Рейтинг:
0

OriginalGriff

Это прекрасно работает для меня:

GOOD	1144	1217.9	73.900024	102.63892

Но... быстрый взгляд на набор данных говорит о том, что там есть шесть таблиц, так что вполне возможно, что таблицы[0] не содержат тех данных, которые вы ищете...


Sam_gaik

Он показывает только..<dip_1>
Другие данные не показываются.. почему?..пожалуйста, помогите

OriginalGriff

Как я уже сказал: там есть 6 столов. Используйте отладчик, чтобы посмотреть на них и посмотреть, сможете ли вы определить данные, которые вы ищете.

Sam_gaik

И как отобразить всю таблицу..

OriginalGriff

Используйте отладчик - вы можете посмотреть на любую память с помощью этого!

Sam_gaik

Он показывает только одну таблицу .. нужно все <dip> В одной сетке...пожалуйста, помогите...