C# 使用c将xml文件作为存储过程参数传递的最简单方法#
我正在寻找使用c#将xml文件作为存储过程参数传递的最简单方法。实际上,我需要创建一个xml文件,以便将此xml保存到sql数据库中。在数据库存储过程中,有一个参数为xml类型。我已经创建了一个如下所述的xml文件C# 使用c将xml文件作为存储过程参数传递的最简单方法#,c#,xml,xml-parsing,C#,Xml,Xml Parsing,我正在寻找使用c#将xml文件作为存储过程参数传递的最简单方法。实际上,我需要创建一个xml文件,以便将此xml保存到sql数据库中。在数据库存储过程中,有一个参数为xml类型。我已经创建了一个如下所述的xml文件 StringWriter stringWriter = null; XmlTextWriter writer = null; try { stringWriter = new StringWriter(new StringBuilder()); writer = ne
StringWriter stringWriter = null;
XmlTextWriter writer = null;
try
{
stringWriter = new StringWriter(new StringBuilder());
writer = new XmlTextWriter(stringWriter);
writer.Formatting = Formatting.Indented;
writer.WriteStartDocument();
writer.WriteComment("Holiday Info");
writer.WriteStartElement("holidayInfo", "");
for (int groupIndex = 0; groupIndex < numberOfGroup; groupIndex++)
{
for (int religionIndex = 0; religionIndex < numberOfReligion; religionIndex++)
{
for (int jobStationIndex = 0; jobStationIndex < numberOfJobStation; jobStationIndex++)
{
writer.WriteStartElement("HOLIDAY", "");
writer.WriteAttributeString("intGroupID", chkGroupList.Items[groupIndex].Value.ToString());
writer.WriteAttributeString("intJobTypeId", "0");
writer.WriteAttributeString("intJobStationID", chkReligionList.Items[religionIndex].Value.ToString());
writer.WriteAttributeString("intHolidayID", ddlHolidayName.SelectedValue.ToString());
writer.WriteAttributeString("dtePermitedDate", DateTime.Now.ToShortDateString());
writer.WriteAttributeString("intReligionId", chkReligionList.Items[religionIndex].Value.ToString());
writer.WriteAttributeString("dteFromDate", txtFromDate.Text);
writer.WriteAttributeString("dteToDate", txtToDate.Text);
writer.WriteEndElement();
}
}
}
stringWriter.GetStringBuilder().ToString();
return will be what if i want to sent this file to the store procedure parameter?;
}
finally
{
if (writer != null) writer.Close();
if (stringWriter != null) stringWriter.Close();
}
你的问题中“最简单”的限定词是非常主观的,因为不同的方法是合理有效的。尽管如此,这里有一个“简单”的解决方案:
XDocument doc = XDocument.Parse(xmlstring);
XElement el = doc.Root;
这应该有效。对于整个文档:
XDocument doc = XDocument.Parse(text);
XElement element = XElement.Parse(text);
如果您只需要一个可以轻松添加到其他文档中的元素:
XDocument doc = XDocument.Parse(text);
XElement element = XElement.Parse(text);
这是假设您使用的是.NET3.5-LINQtoXML比旧的API好得多
请注意,您已经反复说过,您需要“一个返回类型为xml的函数”。NET中没有“xml”这样的类型,但是像XElement
、XDocument
等类型都是xml API中的类型。您不需要创建单独的方法来返回它们-它们已经作为XDocument.Parse
和XElement.Parse
存在,如上所示
我怀疑您对自己的需求感到困惑——请注意,“返回xml文件”“也有点奇怪。您正在尝试将数据写入文件吗?从文件中读取它?如果没有,文件与您的需求有什么关系
如果您能提供更多关于您真正想做什么的详细信息,我们可能会为您提供更多帮助。这是一个.NET 2.0 API,如果您不使用.NET 3.5或更高版本,您应该使用它。否则.NET3.5的
XDocument
提供了一个更好的、支持LINQ的API。噢,谢谢。我已经有一段时间没有在.NET中开发任何东西了。我有点过时了。谢谢你的回答,但我需要一个返回类型为xml的函数。@yeasir007:在.NET中没有像xml那样的类型-XDocument、XElement、XmlDocument等都是xml API中的类型。我怀疑您对自己的需求感到困惑。@yeasir007嗯,我使用的是XmlDocument doc=new XmlDocument();doc.LoadXml(str);doc.Save(“XML.XML”)代码>当我在C#上开发时,但是我听说它是.NET 2.0 API,如果你不需要最新版本,你可以使用它。谢谢你的回答,但我需要一个返回类型为xml的函数。XDocument
和XElement
分别是xml文档和xml元素的强类型表示形式-在.NET 3.5+XElement.Parse()中
可以很好地处理“文档”。@HenkHolterman:当然可以-可以编辑。我的观点是,如果您只需要一个元素,您不需要首先将其解析为文档,看起来您可以返回xml字符串。但您必须发布SP才能确定。