【问题标题】:best xml format for store it in sql server database将其存储在 sql server 数据库中的最佳 xml 格式
【发布时间】:2016-07-11 11:18:57
【问题描述】:

我有一个这样的 xml 格式的工作流:

...
<workflow>
  <tasks>
    <task type="start" id="Task_038517r" name="addRequest">
      <form id="Form_3y245d1"/>      
    </task>
    ...
    <task type="final" id="Task_1sytah6" name="confirmationRequest">
      <form id="Form_3y245d1"/>
    </task>
  </tasks> 
</workflow>
...

我可以将其更改为另一种格式:

...
<workflow>
  <tasks>
    <task>
      <type>start</type>
      <id>Task_038517r</id>
      <name>addRequest</name>
      <form>
        <id>from_3jfu845</id>
      </form>
    </task>
    ...
    <task>
      <type>final</type>
      <id>Task_1sytah6</id>
      <name>confirmationRequest</name>
      <form>
        <id>form_3y245d1</id>
      </form>
    </task>
  </tasks>
</workflow>
...

我需要将此 xml 存储在 workflowXML 字段中。 workflowXML 是工作流 sql server 表的文件。我需要在 Web 应用程序中使用 entityframework 来获取属性值。第一种格式是体积较小。第二种格式结构更好。

如果有人能解释哪种方法更好,那将非常有帮助。

谢谢。

【问题讨论】:

  • 也许您的问题的答案隐藏在“在哪里使用它”的答案中。如果您要解析并仅读取 id、name 等并使用这些数据查询数据库表,那么您甚至可以将其存储在关系表中,而不是存储为 XML。
  • 感谢您的评论。我知道我可以做到,但我需要以 xml 格式存储它。

标签: sql-server xml entity-framework


【解决方案1】:

面向属性存储的一个优点是每个值属于给定的元素,它不能存在两次。

如果人类的可读性很重要,那么第二种格式可能更容易阅读(你称之为更好的结构),但是 - 老实说 - 这不应该打扰你。 XML - 在大多数情况下 - 由机器读取。属性与其元素密切相关。

由于您的数据可能已生成,您也不应该担心子元素的(可能)重复,这可能会破坏您的数据。

所以,我最后的声明是,这在某种程度上是您的个人品味。我更喜欢属性

【讨论】:

    【解决方案2】:

    我认为您将使用实体框架获得 xml 节点的属性值。然后你必须阅读 linq to xml 并以这种方式使用它。所以我认为第一种格式表明可以做到。 访问此链接:

    how to get Attribute Value using linq to xml?

    Linq to XML simple get attribute from node statement

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-11-18
      • 1970-01-01
      • 2011-10-11
      • 2015-07-21
      • 1970-01-01
      • 2012-04-18
      • 2012-04-29
      • 2018-04-29
      相关资源
      最近更新 更多