我有一个 XML 模板文件和一个以前保存的 XML 数据库记录:
- XML 文件 - 包含我想要的对象的所有当前字段 - 这可能会随着时间的推移随着添加的项目而改变
- XML 数据库记录 - 这是保存的 XML。它可能与第一点中的 XML 不同,因为“模板”xml 可能已更新为包含更多字段等。
一个例子将清楚这一点..
我有一个看起来像这样的“模板”xml:
<dvd displayText=""> <field id="txtTitle" displayText="true" required="true" type="textbox" width="100" label="DVD 标题" /> <field id="txtDescription" displayText="true" required="true" type="textbox" width="50" label="你的描述" /> </dvd>
这告诉 UI 在创建新记录时收集标题和描述。这完美地工作。
因此,当我创建一个新的 DVD 记录时,它将向用户显示这两个字段并收集“标题”和“描述”值并将值保存到 SQL Server 表中的 XML 字段中。
但我现在要做的是向模板 xml 添加一个新的“字段”定义。我已经完成了这个.. 就本示例而言,让我们将“PurchasedDate”字段定义添加到模板 XML 中。
<dvd displayText=""> <field id="txtTitle" displayText="true" required="true" type="textbox" width="100" label="DVD 标题" /> <field id="txtDescription" displayText="true" required="true" type="textbox" width="50" label="你的描述" /> <field id="txtPurchaseDate" displayText="true" required="true" type="textbox" width="50" label="购买日期" /> </dvd>
如果我正在创建新的 DVD 记录,系统会提示我输入 3 个值;标题、描述、购买日期,因为那是模板 XML 中的内容。但如果我回想以前保存的 DVD 记录,它在 XML 中没有新的“购买日期”字段。
<dvd displayText="我的 DVD"> <field id="txtTitle" displayText="true" required="true" type="textbox" width="100" label="DVD Title">我的电影 DVD</field> <field id="txtDescription" displayText="true" required="true" type="textbox" width="50" label="Your Description">这部电影很棒</field> </dvd>
所以我想要做的是获取保存在数据库中的 XML(如上所示),比较或合并模板 XML 文件中任何缺少的“字段”定义..并最终得到以下结果:
<dvd displayText="我的 DVD"> <field id="txtTitle" displayText="true" required="true" type="textbox" width="100" label="DVD Title">我的电影 DVD</field> <field id="txtDescription" displayText="true" required="true" type="textbox" width="50" label="Your Description">这部电影很棒</field> <field id="txtPurchaseDate" displayText="true" required="true" type="textbox" width="50" label="购买日期" /> </dvd>
我正在使用 Linq 从数据库中的现有记录中获取值(如果存在)。我目前正在执行 XmlDocument.LoadXml(xmlstring) 或 XmlDocument.Load(filename) ,具体取决于它是新记录还是现有记录。
然后,我想获取 XmlDocument 并将模板合并到其中以生成上述 XML 输出以在屏幕上显示。
如果有比使用 XmlDocuments 更好的方法,请告诉我.. 我很乐意去研究它然后使用它..
我正在使用 C#...
非常感谢..