gpt4 book ai didi

c# - 基于 Empty XML 示例合并丢失的 XML 记录

转载 作者:太空宇宙 更新时间:2023-11-03 13:52:37 25 4
gpt4 key购买 nike

我有一个 XML 模板文件和一个以前保存的 XML 数据库记录:

  • XML 文件 - 包含我想要的对象的所有当前字段 - 这可能会随着时间的推移随着项目的添加而改变
  • XML 数据库记录 - 这是保存的 XML。它可能与第一点中的 XML 不同,因为"template"xml 可能已更新为包含更多字段等。

一个例子可以解决这个问题..

我有一个如下所示的"template"xml:

<dvd displayText="">  <field id="txtTitle" displayText="true" required="true" type="textbox" width="100" label="DVD Title" />  <field id="txtDescription" displayText="true" required="true" type="textbox" width="50" label="Your Description" /></dvd>

这会告诉 UI 在创建新记录时收集标题和描述。这非常有效。

因此,当我创建一个新的 DVD 记录时,它将向用户显示这两个字段并收集“标题”和“描述”值并将该值保存到 SQL Server 表中的 XML 字段中。

但是我现在要做的是在模板 xml 中添加一个新的“字段”定义。我已经这样做了。为了这个示例的目的,让我们将“PurchasedDate”字段定义添加到模板 XML。

<dvd displayText="">  <field id="txtTitle" displayText="true" required="true" type="textbox" width="100" label="DVD Title" />  <field id="txtDescription" displayText="true" required="true" type="textbox" width="50" label="Your Description" />  <field id="txtPurchaseDate" displayText="true" required="true" type="textbox" width="50" label="Purchase Date" /></dvd>

如果我正在创建新的 DVD 记录,系统会提示我输入 3 个值;标题、描述、购买日期,因为这是模板 XML 中的内容。但是如果我记忆以前保存的 DVD 记录,它在 XML 中没有新的“购买日期”字段。

<dvd displayText="My DVD">  <field id="txtTitle" displayText="true" required="true" type="textbox" width="100" label="DVD Title">My Movie DVD</field>  <field id="txtDescription" displayText="true" required="true" type="textbox" width="50" label="Your Description">This movie is awesome</field></dvd>

所以我想做的是获取保存在数据库中的 XML(如上所示),比较或合并模板 XML 文件中任何缺失的“字段”定义……并以下面的结尾:

<dvd displayText="My DVD">  <field id="txtTitle" displayText="true" required="true" type="textbox" width="100" label="DVD Title">My Movie DVD</field>  <field id="txtDescription" displayText="true" required="true" type="textbox" width="50" label="Your Description">This movie is awesome</field>  <field id="txtPurchaseDate" displayText="true" required="true" type="textbox" width="50" label="Purchase Date" /></dvd>

我正在使用 Linq 从数据库的现有记录中获取值(如果存在的话)。我目前正在执行 XmlDocument.LoadXml(xmlstring) 或 XmlDocument.Load(filename),具体取决于它是新记录还是现有记录。

然后我想获取 XmlDocument 并将模板合并到其中以生成上述 XML 输出以显示在屏幕上。

如果有比使用 XmlDocuments 更好的方法,请告诉我..我会很乐意去研究它然后使用它..

我正在使用 C#...

非常感谢..

最佳答案

您的解决方案存在巨大的冗余问题,例如,如果您更改其中一个字段的显示文本,或更改必填字段,您将面临类似的问题。

我会将元数据与实际数据分开,即保留一个描述字段的记录:

<dvd displayText="">
<field id="txtTitle" displayText="true" required="true" type="textbox" width="100" label="DVD Title" />
<field id="txtDescription" displayText="true" required="true" type="textbox" width="50" label="Your Description" />
<field id="txtPurchaseDate" displayText="true" required="true" type="textbox" width="50" label="Purchase Date" />
</dvd>

并将数据记录分解为字段 ID 和值:

<dvd displayText="A movie">
<field id="txtTitle">Some title</field>
<field id="txtDescription">Some description</field>
<field id="txtPurchaseDate">2012-12-21</field>
</dvd>

使用元 xml 找出可以加载的字段并从精简的 xml 中获取值。

否则,每次记录布局更改时,您都需要同步所有数据。

关于c# - 基于 Empty XML 示例合并丢失的 XML 记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13268851/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com