应用SQLServer For XML 生成XML避免在C# 拼字符串

2019-03-02 01:00|来源: 网路

 最近在Review代码时,有一个功能是 查询数据库中一列,然后生成像

<rootelements>
     <col>a</col>
     <col>b</col>
      <col>c</col>
</rootelements>

开发人员查用的方法是,返回一个结果集,然后用循环的方法拼成这个字符串.然后再解析成XML

其实从05以后SQLServer对XML的支持大大增强.我们可以使用下面这一行SQL就返回上面的结果

Select col from table for xml xpath(‘’),root(‘rottelements')

xpath(‘') 表明每个行不再生成一个Xml根元素.假如写成

Select col from table for xml xpath(),root(‘rottelements’)

<rootelements>
    <row>
     <col>a</col>row
    </row>
    <row>
     <col>b</col>row
    </row> 
    <row>
     <col>c</col>row
    </row> 
</rootelements>

更详细的可以看下面的微信帮助,写的很详细

http://msdn.microsoft.com/zh-cn/library/bb510462.aspx


转自:http://www.cnblogs.com/listhome/p/3832971

相关问答

更多
  • sqlserver
  • XDocument,XElement和XAttribute类使C#中的xml生成更容易完成。 比使用XmlDocument或XmlWriter。 作为一个例子,为了达到这个目的: 你可以这样做: XDocument xDoc ...
  • 下面的XML PATH查询应该可以帮你实现。 你只需要添加样式表头。 SELECT 'BusinessEntityID' AS 'document/field/@name' , BusinessEntityID AS 'document/field' , '' AS 'document' , 'documentType' AS 'document/field/@name' , PersonType AS 'document/field' , '' AS 'document' , ' ...
  • 您的“数字”列是文本类型(由alpha和连字符字符的存在证明)。 对于文本类型,排序是字母,字母比数字“高”,因此以“c”开头的值大于以“1”开头的值。 如果值,则排序与格式无关:如果字母数字值的第一个字符为零,则最大值为“1234”。 Your "number" column is a text type (evidenced by presence of alpha and hyphen chars). For text types, sorting is alphabetic, and letters ...
  • XDocument xDoc = XDocument.Parse(xml); var count = xDoc.Descendants().Where(n => !n.Elements().Any()).Count(); 或者像@sixlettervariables建议的那样 var count = xDoc.Descendants().Count(e => !e.HasElements); XDocument xDoc = XDocument.Parse(xml); var count = xDoc. ...
  • 正如“fiver”所提到的,您可以使用XmlDocument或新的简化版本XDocument来创建XML文档。 以下是MSDN中用于创建XML文档和写入文件的示例代码片段。 XDocument doc = new XDocument( new XElement("Root", new XElement("Child", "content") ) ); doc.Save("Root.xml"); 这会将以下文本写入xml文件
  • 您可以请求unicode数据(UTF16或UCS2)并将其转换为您需要的UTF-8。 UTF-8是完整的unicode格式,转换快速简便。 You can ask for unicode data (UTF16 or UCS2) and convert it to UTF-8 where you need it. UTF-8 is full unicode format, and conversion is fast and easy.
  • 如果将来有人需要这个,以下代码可以工作: using(var ms = new MemoryStream(result)) { using (var sr = new StreamReader(ms, Encoding.Unicode, true)) { decodedString = sr.ReadToEnd(); } } In case anyone will need this in future, the following code works: usin ...
  • 我没有选择但是遵循xsd,我只从第3部分拿到了它。 这就是为什么它看起来有点令人困惑。 但是我认为解决方案更容易。 我不知道这是怎么回事,但是id确实如此。 我只是用枚举填充数组,看起来不错。 另一个数组保留值。 有点奇怪,没关系,但它确实有效。 / E I had no choise but follow a xsd, I only got it in my hand from 3.rd part. That's why it looks a bit confusing. But the solution ...
  • 通过阅读一些LINQ to XML文档,我得到了如下所示的解决方案, XDocument xdoc = new XDocument(); xdoc = XDocument.Parse(msg.ToString()); var result = xdoc.Element("message").Descendants(); var myString = result.FirstOrDefault().Value; //This will out given json string 再次感谢@JonSkee ...