C# для профессионалов. Том II
Шрифт:
//Записать Xml в файл, чтобы можно было просмотреть его позже
ds.WriteXml("..\\..\\..\\SuppProd.xml", XmlWriteMode.WriteSchema);
//загрузить данные в таблицу
dataGrid1.DataSource=ds;
dataGrid1.DataMember="suppliers";
//создать XmlDataDocument
doc=new XmlDataDocument(ds);
//Выбрать элементы productname и загрузить
их в таблицу
XmlNodeList nodeLst=doc.SelectNodes("//ProductName");
foreach(XmlNode nd in nodeLst) listBox1.Items.Add(nd.InnerXml);
}
В этом примере создаются два объекта
DataTables
в DataSet
из XMLProducts
: Products
и Suppliers
. Отношение состоит в том, что Suppliers
(Поставщики) поставляют Products
(Продукты). Мы создаем новое отношение на столбце SupplierId
в обоих таблицах. Вот как выглядит DataSet
: Делая такой же вызов метода
WriteXml
, как в предыдущем примере, мы получим следующий файл XML (SuppProd.xml
): <?xml version="1.0" standalone="yes"?>
<XMLProducts>
<xsd:schema id="XMLProducts" targetNamespace="" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:element name="XMLProducts" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="products">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Product ID" type="xsd:int" minOccurs="0" />
<xsd:element name="ProductName" type="xsd:string" minOccurs="0" />
<xsd:element name="SupplierID" type="xsd:int" minOccurs="0" />
<xsd:element name="CategoryID" type="xsd:int" minOccurs="0" />
<xsd:element name="QuantityPerUnit" type="xsd:string" minOccurs="0" />
<xsd:element name="UnitPrice" type="xsd:decimal" minOccurs="0" />
<xsd:element name="UnitsInStock" type="xsd:short" minOccurs="0" />
<xsd:element name="UnitsOnOrder" type="xsd:short" minOccurs="0" />
<xsd:element name="ReorderLevel" type="xsd:short" minOccurs="0" />
<xsd:element name="Discontinued" type="xsd:boolean" minOccurs="0" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="suppliers">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="SupplierID" type="xsd:int" minOccurs="0" />
<xsd:element name="CompanyName" type="xsd:string" minOccurs="0" />
<xsd:element name="ContactName" type="xsd:string" minOccurs="0" />
<xsd:element name="ContactTitle" type="xsd:string" minOccurs="0" />
<xsd:element name="Address" type="xsd:string" minOccurs="0" />
<xsd:element name="City" type="xsd:string" minOccurs="0" />
<xsd:element name="Region" type="xsd:string" minOccurs="0" />
<xsd:element name="PostalCode" type="xsd:string" minOccurs="0" />
<xsd:element name="Country" type="xsd:string" minOccurs="0" />
<xsd:element name="Phone" type="xsd:string" minOccurs="0" />
<xsd:element name="Fax" type="xsd:string" minOccurs="0" />
<xsd:element name="HomePage" type="xsd:string" minOccurs="0" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
<xsd:unique name="Constraint1">
<xsd:selector xpath=".//suppliers" />
<xsd:field xpath="SupplierID" />
</xsd:unique>
<xsd:keyref name="Relation1" refer="Constraint1">
<xsd:selector xpath=".//products" />
<xsd:field xpath="SupplierID" />
</xsd:keyref>
</xsd:elements>
</xsd:schema>
<products>
<ProductID>1</ProductID>
<ProductName>Chai</ProductName>
<SupplierID>1</SupplierID>
<CategoryID>1</CategoryID>
Поделиться:
Популярные книги
Имя нам Легион. Том 9
9. Меж двух миров
Фантастика:
боевая фантастика
рпг
аниме
5.00
рейтинг книги
Переиграть войну! Пенталогия
Переиграть войну!
Фантастика:
героическая фантастика
альтернативная история
8.25
рейтинг книги
Наследник хочет в отпуск
5. Десять Принцев Российской Империи
Фантастика:
городское фэнтези
попаданцы
аниме
5.00
рейтинг книги
Офицер
1. Офицер
Фантастика:
боевая фантастика
7.21
рейтинг книги
Темный Лекарь 2
2. Темный Лекарь
Фантастика:
фэнтези
аниме
5.00
рейтинг книги
Академия проклятий. Книги 1 - 7
Академия Проклятий
Фантастика:
фэнтези
8.98
рейтинг книги
Неудержимый. Книга XVI
16. Неудержимый
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Камень. Книга пятая
5. Камень
Фантастика:
боевая фантастика
6.43
рейтинг книги
Ваше Сиятельство 9
9. Ваше Сиятельство
Фантастика:
боевая фантастика
попаданцы
стимпанк
аниме
фэнтези
5.00
рейтинг книги
Мастер Разума IV
4. Мастер Разума
Фантастика:
боевая фантастика
попаданцы
аниме
5.00
рейтинг книги
Калибр Личности 1
1. Калибр Личности
Фантастика:
попаданцы
альтернативная история
аниме
5.00
рейтинг книги
Измена. Тайный наследник. Том 2
2. Тайный наследник
Фантастика:
фэнтези
5.00
рейтинг книги
Искатель 1
1. Валинор
Фантастика:
фэнтези
попаданцы
рпг
5.00
рейтинг книги
Трактир «Разбитые надежды»
1. Трактир "Разбитые надежды"
Фантастика:
боевая фантастика
7.69