-1
SQLクエリからxmlを生成しようとしています。複数のSQLクエリの結果を結合し、ルート属性に囲まれる単一のxmlを生成する必要があります。C#を使用して複数のSQLクエリに対して個別のSINGLE xmlを生成します。
私は一つだけのクエリを使用しますが、私は同じR_NOを使用して別のSQLテーブルからレコードをプルし、それらを組み合わせて、それを保存したい場合、私は別のXMLを生成することができる午前ブローC#コード
class Program
{
static void Main(string[] args)
{
SqlConnection conn = null;
XmlReader reader;
XmlDocument xmlDoc;
DataTable rnos = new DataTable();
try
{
string connString = "Connection";
conn = new SqlConnection(connString);
SqlCommand cmd = new SqlCommand("select * from TopSection where r_no NOT like'C%' and s_seq='1'",conn);
conn.Open();
SqlDataAdapter da = new SqlDataAdapter(cmd);
da.Fill(rnos);
DataRow dr;
string cmd1= @"SELECT
(SELECT * FROM TopSection where r_no = @rno and s_seq=1 FOR XML PATH('Top'), TYPE) AS 'Tops',
(SELECT * FROM office where r_no = @rno and s_seq=1 FOR XML PATH('Office'), TYPE) AS 'Offices',
(SELECT * FROM complete where r_no= @rno and s_seq=1 FOR XML PATH('Complete'), TYPE) AS 'Completes',"+"FOR XML PATH(''), ROOT('root') ,ELEMENTS XSINIL";
for (int i = 1; i < 5; i++)
{
dr = rnos.Rows[i];
string no= dr["r_no"].ToString();
SqlCommand command = new SqlCommand(cmd1, conn);
command.Parameters.Add("@rno", SqlDbType.Char, 20).Value = no;
reader = command.ExecuteXmlReader();
xmlDoc = new XmlDocument();
while(reader.Read())
{
xmlDoc.Load(reader);
}
xmlDoc.Save("C:TopSection-" + i + ".xml");
}
}
catch(SqlException e)
{
throw e;
}
}
}
}
を持っていますXMLとして。私は、FORでの正しい構文のエラーとエラーに遭遇しています。私はこのようなxmlとして探しています
<root>
<tops>
<top>----</top>
<top>----</top>
</tops>
<offices>
<office>----</office>
<office>----</office>
</offices>
<completes>
<complete>---</complete>
<complete>---</complete>
</completes>
</root>
ヘルプは高く評価されます。
あなたは「Completes'' '後の浮遊カンマを持っています。文字列を印刷した場合やSSMSでコピーした場合は、すぐに表示されます。 –
@JeroenMostertコメントに追加すると、 'FOR XML PATH( '')'の前に空白を1つ空けてください – Amit
あなたの助けに感謝しました!!! – user2897967