Форум: "Начинающим";
Текущий архив: 2007.01.14;
Скачать: [xml.tar.bz2];
ВнизXML -> DataSet Найти похожие ветки
← →
Галинка © (2006-12-21 15:24) [0]Есть XML-документ со схемой:
<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="Kanaele">
<xs:complexType>
<xs:sequence>
<xs:element name="VibeKurve">
<xs:complexType>
<xs:sequence>
<xs:element name="Eingaenge">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" name="Kanal">
<xs:complexType>
<xs:sequence>
<xs:element name="ID" type="xs:unsignedByte" />
<xs:element name="Name" type="xs:string" />
<xs:element name="Einheit" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Ausgaenge" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:complexType>
</xs:element>
</xs:schema>
Как получить датасет с таблицами с названиями по тегам первого + второго уровня и с записыми по тегам третьего. Типа:
DataTable "VibeKurveEingaenge" (ID, Name, Einheit).
← →
Megabyte © (2006-12-21 17:11) [1]Копайся с утилитой XMLMapper и компонентами XMTransform и ClientDataSet.
← →
saxon (2006-12-21 17:36) [2]
> Галинка ©
У вас <xs:sequence> не закрыт.
В чем делаете? (Delphi or ?)
← →
Галинка © (2006-12-21 17:47) [3]saxon (21.12.06 17:36) [2]
делаю в или... в си шарпе. Это просто кусок схемы, вся не влезла. это просто например.
у меня есть работоспособный вариант, но там в документ читаем хмл и потом в foreach делаем то, что нам собственно нада.dataSet1.Tables.Clear();
XmlDocument curKanaele = new XmlDocument();
curKanaele.Load(openFileDialog1.FileName);
foreach (XmlNode curBaustein in curKanaele.DocumentElement.ChildNodes)
foreach (XmlNode curKanArt in curBaustein.ChildNodes)
{
string dtName = curBaustein.Name + curKanArt.Name;
DataTable curDT = new DataTable(dtName);
DataColumn cID = new DataColumn("ID", System.Type.GetType("System.Int32"));
curDT.Columns.Add(cID);
DataColumn cName = new DataColumn("Name", System.Type.GetType("System.String"));
curDT.Columns.Add(cName);
DataColumn cEinheit = new DataColumn("Einheit", System.Type.GetType("System.String"));
curDT.Columns.Add(cEinheit);
DataRow curDR;
foreach (XmlNode curKanal in curKanArt.ChildNodes)
{
object[] paramArray = new object[3];
paramArray[0] = Convert.ToInt32(curKanal.ChildNodes.Item(0).InnerText);
paramArray[1] = curKanal.ChildNodes.Item(1).InnerText;
paramArray[2] = curKanal.ChildNodes.Item(2).InnerText;
curDR = curDT.NewRow();
curDR.ItemArray = paramArray;
curDT.Rows.Add(curDR);
}
dataSet1.Tables.Add(curDT);
}
Но такой вариант не очень прельщает, хотелось бы понять как это все работает средствами DataSet"a.
← →
saxon (2006-12-21 17:53) [4]DataSet.ReadXmlSchema ?
← →
saxon (2006-12-21 17:55) [5]По крайней мере схему из [0] я считал. DataSet сказал что - 3 таблицы.
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2007.01.14;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.011 c