Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用c将xml文件作为存储过程参数传递的最简单方法#_C#_Xml_Xml Parsing - Fatal编程技术网

C# 使用c将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

我正在寻找使用c#将xml文件作为存储过程参数传递的最简单方法。实际上,我需要创建一个xml文件,以便将此xml保存到sql数据库中。在数据库存储过程中,有一个参数为xml类型。我已经创建了一个如下所述的xml文件

 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才能确定。