##問題点
Visual Studio 2017でC#を使い、XSD(XML Schema)をDataSetに読み込み、データを格納した上で、XMLデータとして出力するプログラムを作成しています。しかし、このXSD内で階層が3階層以上になると、作成されるXMLの階層がXSDの通りにならないという問題が発生しています。
###XSDを文字列で読み込み、DataSetにセットした上で、Tablesの各テーブルにデータを入れていく処理
xsd
1<?xml version="1.0" encoding="utf-8"?> 2<xs:schema id="XMLSchema_201812111740_B" 3 elementFormDefault="qualified" 4 xmlns:xs="http://www.w3.org/2001/XMLSchema" 5 xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"> 6 <xs:element name="施設" msdata:IsDataSet="true"> 7 <xs:complexType> 8 <xs:sequence> 9 <xs:element name="施設情報" minOccurs="0" maxOccurs="1"> 10 <xs:complexType> 11 <xs:sequence> 12 <xs:element name="基本情報" minOccurs="0" maxOccurs="1"> 13 <xs:complexType> 14 <xs:sequence> 15 <xs:element name="科目" minOccurs="0" maxOccurs="1"> 16 <xs:complexType> 17 <xs:sequence> 18 <xs:element name="その他" minOccurs="0" maxOccurs="1"> 19 <xs:complexType> 20 <xs:sequence> 21 <xs:element name="その他" type="xs:string" /> 22 </xs:sequence> 23 </xs:complexType> 24 </xs:element> 25 </xs:sequence> 26 </xs:complexType> 27 </xs:element> 28 </xs:sequence> 29 </xs:complexType> 30 </xs:element> 31 </xs:sequence> 32 </xs:complexType> 33 </xs:element> 34 </xs:sequence> 35 </xs:complexType> 36 </xs:element> 37</xs:schema> 38
cs
1// XSDを読み込む 2var xml = new DataSet("XmlSchema"); 3xml.ReadXmlSchema(_getMemoryStream(XmlSchemaString)); // xsdを文字列で渡している 4 5// 読み込んだXSDを基にしたDataTable群にダミーのデータを格納していく 6foreach (DataTable Table in xml.Tables) 7{ 8 var row = Table.NewRow(); 9 foreach (DataColumn column in Table.Columns) 10 { 11 if (column.ColumnMapping != MappingType.Hidden) 12 { 13 row[column.ColumnName] = "test"; 14 } 15 } 16 Table.Rows.Add(row); 17} 18var xmlData = xml.GetXml();
上記記述を行った場合、xmlDataに格納される値として
xml
1<施設> 2 <施設情報 /> 3 <基本情報 /> 4 <科目> 5 <その他> 6 <その他>test</その他> 7 </その他> 8 </科目> 9</施設>
が格納されます。この形ではなく
xml
1<?xml version="1.0" encoding="utf-8"?> 2<施設> 3 <施設情報> 4 <基本情報> 5 <科目> 6 <その他> 7 <その他>test</その他> 8 </その他> 9 </科目> 10 <基本情報> 11 </施設情報> 12</施設>
というような形式をイメージしているのですが、お知恵を拝借できませんでしょうか?
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。