【问题标题】:How to transform from SQL Server text field to xml and back如何从 SQL Server 文本字段转换为 xml 并返回
【发布时间】:2011-06-01 05:09:35
【问题描述】:

我们将 xml 保存在 SQL Server 数据库中,数据类型为 text,因此它是一个长字符串。

我现在需要做的是将此字符串转换为 xml,然后使用它,最后将其转换回字符串以保存回数据库。

xml:

<Posts>
    <DialogPost>
      <Type></Type>
      <User></User>
      <Customer></Customer>
      <Date></Date>
      <Message></Message>
    </DialogPost>
</Posts>

我已经开始使用 Linq to xml,它看起来很棒,但我在让它工作时遇到了问题。

XDocument dialogXML = XDocument.Load("trying to load the xml string right in");

它不喜欢直接来自数据库的字符串。你会建议我如何解决这个问题?读和写回数据库。

【问题讨论】:

  • 为什么不将它存储在一个 XML 字段中呢?
  • 我依赖另一个应用程序,该应用程序已经将其保存到此文本字段,绝对首选 xml 字段类型。
  • 我更正了您发布的 XML。如果这不是错字,请恢复我的更改,恢复无效的 XML。

标签: .net sql sql-server xml linq-to-xml


【解决方案1】:

使用XDocument.Parse 方法。 Load 需要一个 URI 而不是 XML。

您还应该注意,您发布的 XML 无效。您在末尾有一个结束 Dialog 标签,但没有开始标签。这是一个适用于有效 XML 的示例。

string str =
@"<?xml version=""1.0""?>
<!-- comment at the root level -->
<Posts>
    <DialogPost>
      <Type></Type>
      <User></User>
      <Customer></Customer>
      <Date></Date>
      <Message></Message>
    </DialogPost>
  </Posts>";
XDocument doc = XDocument.Parse(str);

Take a look here 获取示例和更多信息。

【讨论】:

  • 像魅力一样工作,谢谢。如果我想添加更多 我应该怎么做?
  • 您只需在结束DialogPost 标记下方但在结束Posts 标记之前添加另一个DialogPost
猜你喜欢
  • 2023-04-03
  • 2016-04-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-17
  • 2020-10-15
  • 2012-01-11
相关资源
最近更新 更多