【问题标题】:table to xml record c#表到xml记录c#
【发布时间】:2016-06-05 06:54:48
【问题描述】:

我需要在我的 SQL Server DB 上存储同一列中的许多记录,为此我使用 XML 字段。在后端,我有读取/写入 xml 记录并将数据插入表中的代码。表是大小可变。我在从表中读取字段并将它们插入 xml 变量时遇到问题。 我需要得到的是:

<BigTag>
<SmallTagName1>  something</SmallTagName1>
<SmallTagName2>  thanksForanswering</SmallTagName2>
<SmallTagName3>  youareawesome</SmallTagName3>
</BigTag>

表格是:

smalltagTable[] = {something,thanksForanswering,youareawesome,....}

这是我的代码:

XElement WidgetListE1 = null;

WidgetListE1 = new XElement("BigTag"  );

string smalltagname = "smalltag ";
string smalltagdata;

for(int i=0;i<smalltagTable.Length; i++ )
{
    SmallTagname = "smallTagName " + i;
    smalltagdata = smalltagTable[i];
    WidgetListE1.Add(new XElement(smallTagName.ToString(),SmalltagData.ToString() ));
}

string a2 = WidgetListE1.ToString();

问题是这段代码遇到了错误:

' ' 字符,十六进制值 0x20,不能包含在名称中。 就行了:

WidgetListE1.Add(new XElement(smallTagName.ToString(),SmalltagData.ToString() ));

【问题讨论】:

  • 这个 sn-p 不从数据库中读取数据。什么实际问题?如何从 SQL Server 表中读取 XML 字段,或者如何从字符串数组构造 XML 字符串?
  • 你的问题到底是什么?
  • PS SQL Server 已经有一个 XML 类型。不过,发布的 XML sn-p 可能是一个糟糕的选择,因为标签元素不同。最好使用相同的标签名称,即smallTagName 并存储已排序的字段(XML 保留顺序)或添加order 属性。否则,您将需要不同的代码来读取 Tag1、Tag2、Tag3 等
  • 请问您是在sqlserver中存储数据,那么提取数据到xml的目的是什么?
  • 错误很明显 - 它不喜欢标签名称中的空格。您不能在标签的名称中包含空格——它们不会与没有值的属性不同,例如。在任何情况下,如果你的 field 是 XML,你不需要构造任何东西。

标签: c# xml linq


【解决方案1】:

我发布此内容只是为了确保答案清晰可见。归功于 Panagiotis Kanavos。问题是xml的标签中有一个空格。而不是:

 <smalltag 1> something </smalltag 1> 

应该是

<smalltag1> something</smalltag1>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-07-01
    • 2010-12-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-21
    • 1970-01-01
    相关资源
    最近更新 更多