如何将XML文件读入DataSet,编辑一些字段并将新的XML文件写入磁盘 [英] How to read XML File into a DataSet, edit some fields and write the new XML File to disk

查看:69
本文介绍了如何将XML文件读入DataSet,编辑一些字段并将新的XML文件写入磁盘的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我们使用XML文件作为"无人值守"的来源。安装我们的一个应用程序,但每次我们为应用程序获得新的构建时,我们必须手动编辑包含所有环境变量的文件,例如数据库连接字符串,网站和应用程序池名称等。我正在写一个表单应用程序来简化这个过程,但是尽管在网上进行了长时间的搜索,但是考虑到我在下面粘贴了一个样本的XML文件的结构,找不到合适的方法来做到这一点(道歉是长期挥霍):


<?xml version =" 1.0"编码= QUOT; UTF-8英寸?> 
< Config>
< FramworkFolder>
< add key =" Net2"值= QUOT; \Microsoft.NET\Framework" />
< / FramworkFolder>
< NodePaths>
< add key =" Infr.Config.SDK" />
< add key =" Infr.Config.Runtime" ConfigureIIS = QUOT;配置/ InfrConfigRuntime / ConfigureIIS /新增] ConfigureDBconfigDB = QUOT;配置/ InfrConfigRuntime / ConfigureConfigDB /新增] ConfigDetail = QUOT;配置/ InfrConfigRuntime / ConfigDetail /新增] />
< add key =" Infr.Instr.SDK" />
< add key =" Infr.Instr.Runtime.v2" ConfigureConfigService = QUOT;配置/ InfrInstrRuntimeV2 / ConfigureConfigService /新增] />
< add key =" Infr.TransactionLogging.SDK" />
< add key =" Infr.TransactionLogging.Runtime" ConfigDetail = QUOT;配置/ TransLoggingRuntime / ConfigDetail /新增] ConfigureConfigService = QUOT;配置/ TransLoggingRuntime / ConfigureConfigService /新增] ConfigureTransLogServiceXml = QUOT;配置/ TransLoggingRuntime / ConfigTransLogServiceXml /新增] ConfigureTransLogServiceApp = QUOT;配置/ TransLoggingRuntime / ConfigTransLogServiceApp /新增] ConfigDetailXml = QUOT;配置/ TransLoggingRuntime / ConfigDetailXml /新增] ConfigDetailApp = QUOT;配置/ TransLoggingRuntime / ConfigDetailApp /新增] ConfigureInstrumentation = QUOT;配置/ TransLoggingRuntime / ConfigInstrumentation /新增] />
< add key =" DSF.SDK.ConversationTier" />
< add key =" DSF.SDK.PresentationTier" />
< add key =" DSF.ConversationController.Runtime" ConfigureIIS = QUOT;配置/ ConversationController / ConfigureIIS /新增] ConfigureDBStateDB = QUOT;配置/ ConversationController / ConfigureStateDB /新增] ConfigureDBASPStateDB = QUOT;配置/ ConversationController / ConfigureASPStateDB /新增] ConfigureCC = QUOT;配置/ ConversationController / ConfigureCC /新增] ConfigDetail = QUOT;配置/ ConversationController / ConfigDetail /新增] ConfigureAppSettings = QUOT;配置/ ConversationController / ConfigureAppSettings /新增] />
< add key =" Retail.Presentations" ConfigureIIS = QUOT;配置/ Retail.Presentations / ConfigureIIS /新增] ConfigureDocPaths = QUOT;配置/ Retail.Presentations / ConfigureDocPaths /新增] ConfigDetail = QUOT;配置/ Retail.Presentations / ConfigDetail /新增] />
< add key =" Retail.Controller" />
< add key =" LogoffServiceSetup" ConfigDetail = QUOT;配置/ LogoffService / ConfigDetail /新增] ConfigureAppSettings = QUOT;配置/ LogoffService / ConfigAppSettings /新增] ConfigureInstrumentation = QUOT;配置/ LogoffService / ConfigInstrumentation /新增] ConfigureDBStateDB = QUOT;配置/ LogoffService / ConfigureStateDB /新增] />
< add key =" HostDownloadServiceSetup" ConfigDetail = QUOT;配置/ HostDownloadService / ConfigDetail /新增] ConfigureAppSettings = QUOT;配置/ HostDownloadService / ConfigAppSettings /新增] ConfigureInstrumentation = QUOT;配置/ HostDownloadService / ConfigInstrumentation /新增] ConfigureDBStateDB = QUOT;配置/ HostDownloadService / ConfigureStateDB /新增] />
< add key =" ConfigToolSetup" ConfigDetail = QUOT;配置/ ConfigTool / ConfigDetail /新增] ConfigurewebServiceUrls = QUOT;配置/ ConfigTool / ConfigwebServiceUrls /新增] ConfigureAppSettings = QUOT;配置/ ConfigTool / ConfigAppSettings /新增] />
< add key =" HostSimulatorSetup" ConfigDetail = QUOT;配置/ HostSimulator / ConfigDetail /新增] ConfigureAppSettings = QUOT;配置/ HostSimulator / ConfigAppSettings /新增] />
< / NodePaths>
< SetupFolders>
< add key =" Infr.Config.SDK" ApplicationPath =" C:\Program Files \ NedbankLtd \" />
< add key =" Infr.Config.Runtime" ApplicationPath =" C:\Program Files \ NedbankLtd \" />
< add key =" Infr.Instr.SDK" ApplicationPath =" C:\Program Files \ NedbankLtd \" />
< add key =" Infr.Instr.Runtime.v2" ApplicationPath =" C:\Program Files \ NedbankLtd \" />
< add key =" Infr.TransactionLogging.SDK" ApplicationPath =" C:\Program Files \ NedbankLtd \" />
< add key =" Infr.TransactionLogging.Runtime" ApplicationPath =" C:\Program Files \ NedbankLtd \" />
< add key =" DSF.SDK.ConversationTier" ApplicationPath =" C:\Program Files \ NedbankLtd \" />
< add key =" DSF.SDK.PresentationTier" ApplicationPath =" C:\Program Files \ NedbankLtd \" />
< add key =" DSF.ConversationController.Runtime" ApplicationPath =" C:\Program Files\NedbankLtd\ConversationController" />
< add key =" Retail.InteractionTier" ApplicationPath =" C:\Program Files \ NedbankLtd \ ConversationController \DSF_Runtime_ConversationController" />
< add key =" Retail.Presentations" ApplicationPath =" C:\Program Files\NedbankLtd\RetailBanking" />
< add key =" Retail.Controller" ApplicationPath =" C:\Program Files \ NedbankLtd \ ConversationController \DSF_Runtime_ConversationController" />
< add key =" LogoffServiceSetup" ApplicationPath =" C:\Program Files \ NedbankLtd \ ConversationController \DSF_Runtime_ConversationController \" />
< add key =" HostDownloadServiceSetup" ApplicationPath =" C:\Program Files \ NedbankLtd \ ConversationController \DSF_Runtime_ConversationController \" />
< add key =" ConfigToolSetup" ApplicationPath =" C:\Program Files \ NedbankLtd \" />
< add key =" HostSimulatorSetup" ApplicationPath =" C:\Program Files\NedbankLtd\RetailBanking \" />
< / SetupFolders>




我已经尝试过将数据读入DataSet的标准方法,但我的猜测是由于它不起作用的数据格式。任何帮助将不胜感激。

提前致谢。


系统分析员

解决方案

考虑使用< a href ="http://msdn.microsoft.com/en-us/library/182eeyhh(VS.85).aspx"> XML序列化/反序列化。这样您就可以为XML文档生成模式,然后使用该模式在C#或VB.NET中生成.NET类,然后使用System.Xml.Serialization.XmlSerializer将XML转换为.NET对象并根据需要返回。

We use an XML file as a source for an "unattended" installation of one of our applications, but every time we get a new build for the application, we have to manually edit the file with all the environmental variables such as database connection strings, web site and application pool names etc. etc. I am writing a forms application to simplify this process, but cannot despite lengthy searches on the net find a suitable method of doing it considering the structure of the XML file for which I have pasted a sample below (apologies fr the long splurge):

<?xml version="1.0" encoding="utf-8" ?>
<Config>
	<FramworkFolder>
		<add key="Net2" value="\Microsoft.NET\Framework"/>
	</FramworkFolder>
	<NodePaths>
		<add key="Infr.Config.SDK" />
		<add key="Infr.Config.Runtime" ConfigureIIS="Config/InfrConfigRuntime/ConfigureIIS/add" ConfigureDBconfigDB="Config/InfrConfigRuntime/ConfigureConfigDB/add" ConfigDetail="Config/InfrConfigRuntime/ConfigDetail/add"/>
		<add key="Infr.Instr.SDK" />
		<add key="Infr.Instr.Runtime.v2" ConfigureConfigService="Config/InfrInstrRuntimeV2/ConfigureConfigService/add"/>
		<add key="Infr.TransactionLogging.SDK" />
		<add key="Infr.TransactionLogging.Runtime" ConfigDetail="Config/TransLoggingRuntime/ConfigDetail/add" ConfigureConfigService="Config/TransLoggingRuntime/ConfigureConfigService/add" ConfigureTransLogServiceXml="Config/TransLoggingRuntime/ConfigTransLogServiceXml/add" ConfigureTransLogServiceApp="Config/TransLoggingRuntime/ConfigTransLogServiceApp/add" ConfigDetailXml="Config/TransLoggingRuntime/ConfigDetailXml/add" ConfigDetailApp="Config/TransLoggingRuntime/ConfigDetailApp/add" ConfigureInstrumentation="Config/TransLoggingRuntime/ConfigInstrumentation/add" />
		<add key="DSF.SDK.ConversationTier" />
		<add key="DSF.SDK.PresentationTier" />
		<add key="DSF.ConversationController.Runtime" ConfigureIIS="Config/ConversationController/ConfigureIIS/add" ConfigureDBStateDB="Config/ConversationController/ConfigureStateDB/add" ConfigureDBASPStateDB="Config/ConversationController/ConfigureASPStateDB/add" ConfigureCC="Config/ConversationController/ConfigureCC/add" ConfigDetail="Config/ConversationController/ConfigDetail/add" ConfigureAppSettings="Config/ConversationController/ConfigureAppSettings/add"/>
		<add key="Retail.Presentations" ConfigureIIS="Config/Retail.Presentations/ConfigureIIS/add" ConfigureDocPaths="Config/Retail.Presentations/ConfigureDocPaths/add" ConfigDetail="Config/Retail.Presentations/ConfigDetail/add"/>
		<add key="Retail.Controller" />
		<add key="LogoffServiceSetup" ConfigDetail="Config/LogoffService/ConfigDetail/add" ConfigureAppSettings="Config/LogoffService/ConfigAppSettings/add" ConfigureInstrumentation="Config/LogoffService/ConfigInstrumentation/add" ConfigureDBStateDB="Config/LogoffService/ConfigureStateDB/add" />
		<add key="HostDownloadServiceSetup" ConfigDetail="Config/HostDownloadService/ConfigDetail/add" ConfigureAppSettings="Config/HostDownloadService/ConfigAppSettings/add" ConfigureInstrumentation="Config/HostDownloadService/ConfigInstrumentation/add" ConfigureDBStateDB="Config/HostDownloadService/ConfigureStateDB/add" />
		<add key="ConfigToolSetup" ConfigDetail="Config/ConfigTool/ConfigDetail/add" ConfigurewebServiceUrls="Config/ConfigTool/ConfigwebServiceUrls/add" ConfigureAppSettings="Config/ConfigTool/ConfigAppSettings/add" />
		<add key="HostSimulatorSetup" ConfigDetail="Config/HostSimulator/ConfigDetail/add" ConfigureAppSettings="Config/HostSimulator/ConfigAppSettings/add" />
	</NodePaths>
	<SetupFolders>
		<add key="Infr.Config.SDK" ApplicationPath="C:\Program Files\NedbankLtd\"/>
		<add key="Infr.Config.Runtime" ApplicationPath="C:\Program Files\NedbankLtd\"/>
		<add key="Infr.Instr.SDK" ApplicationPath="C:\Program Files\NedbankLtd\"/>
		<add key="Infr.Instr.Runtime.v2" ApplicationPath="C:\Program Files\NedbankLtd\"/>
		<add key="Infr.TransactionLogging.SDK" ApplicationPath="C:\Program Files\NedbankLtd\"/>
		<add key="Infr.TransactionLogging.Runtime" ApplicationPath="C:\Program Files\NedbankLtd\"/>
		<add key="DSF.SDK.ConversationTier" ApplicationPath="C:\Program Files\NedbankLtd\" />
		<add key="DSF.SDK.PresentationTier" ApplicationPath="C:\Program Files\NedbankLtd\" />
		<add key="DSF.ConversationController.Runtime" ApplicationPath="C:\Program Files\NedbankLtd\ConversationController"/>
		<add key="Retail.InteractionTier" ApplicationPath="C:\Program Files\NedbankLtd\ConversationController\DSF_Runtime_ConversationController"/>
		<add key="Retail.Presentations" ApplicationPath="C:\Program Files\NedbankLtd\RetailBanking"/>
		<add key="Retail.Controller" ApplicationPath="C:\Program Files\NedbankLtd\ConversationController\DSF_Runtime_ConversationController"/>
		<add key="LogoffServiceSetup" ApplicationPath="C:\Program Files\NedbankLtd\ConversationController\DSF_Runtime_ConversationController\" />
		<add key="HostDownloadServiceSetup" ApplicationPath="C:\Program Files\NedbankLtd\ConversationController\DSF_Runtime_ConversationController\" />
		<add key="ConfigToolSetup" ApplicationPath="C:\Program Files\NedbankLtd\" />
		<add key="HostSimulatorSetup" ApplicationPath="C:\Program Files\NedbankLtd\RetailBanking\" />
	</SetupFolders>



I have tried the standard methods of reading the data into a DataSet, but my guess is that due to the format of the data it does not work. Any help will be greatly appreciated.

Thanks in advance.


Systems Analyst

解决方案

Consider to use XML serialization/deserialization . That way you would generate a schema for your XML document, then use that schema to generate .NET classes in C# or VB.NET, then use System.Xml.Serialization.XmlSerializer to convert from XML to .NET objects and back as needed.


这篇关于如何将XML文件读入DataSet,编辑一些字段并将新的XML文件写入磁盘的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆