首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从c#应用程序中编写XML文档?

从c#应用程序中编写XML文档?
EN

Stack Overflow用户
提问于 2012-03-03 06:58:45
回答 1查看 224关注 0票数 0

我有一个收集系统信息的C#程序。所有这些都是对xml文件的完整注释。我已经将System version, IE version and Regedit版本传递给了“into”和“string”。现在,我遇到的问题是将输出写入两个文件:

  1. Sys_info.xml -由IIS安装程序program
  2. unattend.xml生成的系统信息,它使用来自

程序的变量。

IIS unattended.xml在这里找到:http://learn.iis.net/page.aspx/133/using-unattended-setup-to-install-iis/

可悲的是,我不是程序员,写这篇文章的人正在度假。

无论如何,这里是unattended.xml的xml代码:

代码语言:javascript
复制
<?xml version="1.0" ?>
<unattend xmlns="urn:schemas-microsoft-com:unattend"
xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State">
<servicing>
<!-- Install a selectable update in a package that is in the Windows Foundation     namespace -->
<package action="configure">
  <assemblyIdentity
     name="Microsoft-Windows-Foundation-Package"
     version="6.0.5308.6" ***reg version int from registry goes here(from my program)***
     language="neutral"
     processorArchitecture="x86" **** Processor architecture goes here(from my program)****
     publicKeyToken="31bf3856ad364e35"
     versionScope="nonSxS"
  />
<selection name="IIS-WebServerRole" state="true"/>
<selection name="IIS-WebServer" state="true"/>
<selection name="IIS-CommonHttpFeatures" state="true"/>
<selection name="IIS-StaticContent" state="true"/>
<selection name="IIS-DefaultDocument" state="true"/>
<selection name="IIS-DirectoryBrowsing" state="true"/>
<selection name="IIS-HttpErrors" state="true"/>
<selection name="IIS-HttpRedirect" state="true"/>
<selection name="IIS-ApplicationDevelopment" state="true"/>
<selection name="IIS-ASPNET" state="true"/>
<selection name="IIS-NetFxExtensibility" state="true"/>
<selection name="IIS-ASP" state="true"/>
<selection name="IIS-CGI" state="true"/>
<selection name="IIS-ISAPIExtensions" state="true"/>
<selection name="IIS-ISAPIFilter" state="true"/>
<selection name="IIS-ServerSideIncludes" state="true"/>
<selection name="IIS-HealthAndDiagnostics" state="true"/>
<selection name="IIS-HttpLogging" state="true"/>
<selection name="IIS-LoggingLibraries" state="true"/>
<selection name="IIS-RequestMonitor" state="true"/>
<selection name="IIS-HttpTracing" state="true"/>
<selection name="IIS-CustomLogging" state="true"/>
<selection name="IIS-ODBCLogging" state="true"/>
<selection name="IIS-Security" state="true"/>
<selection name="IIS-BasicAuthentication" state="true"/>
<selection name="IIS-WindowsAuthentication" state="true"/>
<selection name="IIS-DigestAuthentication" state="true"/>
<selection name="IIS-ClientCertificateMappingAuthentication" state="true"/>
<selection name="IIS-IISCertificateMappingAuthentication" state="true"/>
<selection name="IIS-URLAuthorization" state="true"/>
<selection name="IIS-RequestFiltering" state="true"/>
<selection name="IIS-IPSecurity" state="true"/>
<selection name="IIS-Performance" state="true"/>
<selection name="IIS-HttpCompressionStatic" state="true"/>
<selection name="IIS-HttpCompressionDynamic" state="true"/>
<selection name="IIS-WebServerManagementTools" state="true"/>
<selection name="IIS-ManagementConsole" state="true"/>
<selection name="IIS-ManagementScriptingTools" state="true"/>
<selection name="IIS-ManagementService" state="true"/>
<selection name="IIS-IIS6ManagementCompatibility" state="true"/>
<selection name="IIS-Metabase" state="true"/>
<selection name="IIS-WMICompatibility" state="true"/>
<selection name="IIS-LegacyScripts" state="true"/>
<selection name="IIS-LegacySnapIn" state="true"/>
<selection name="IIS-FTPPublishingService" state="true"/>
<selection name="IIS-FTPServer" state="true"/>
<selection name="IIS-FTPManagement" state="true"/>
<selection name="WAS-WindowsActivationService" state="true"/>
<selection name="WAS-ProcessModel" state="true"/>
<selection name="WAS-NetFxEnvironment" state="true"/>
<selection name="WAS-ConfigurationAPI" state="true"/>
</package>
</servicing>
</unattend>
EN

回答 1

Stack Overflow用户

发布于 2012-03-17 04:19:59

这是你能做的最便宜的事情。

代码语言:javascript
复制
StringBuilder sb = new StringBuilder();

sb.Append("<?xml version=\'1.0\' ?>");
sb.Append("<unattend xmlns='urn:schemas-microsoft-com:unattend' xmlns:wcm='http://schemas.microsoft.com/WMIConfig/2002/State'>");
sb.Append("<servicing>");
sb.Append("<package action='configure'>");
sb.Append("  <assemblyIdentity");
sb.Append("     name='Microsoft-Windows-Foundation-Package'");
sb.Append("     version='6.0.5308.6' ");
sb.Append("     language='neutral'");
sb.Append("     processorArchitecture='x86' ");
sb.Append("     publicKeyToken='31bf3856ad364e35'");
sb.Append("     versionScope='nonSxS'");
sb.Append("  />");

foreach(var kvp in dictionaryOfValues)
{
    sb.AppendFormat("<selection name='{0}' state='{1}'/>", kvp.Key, kvp.Value);
}
sb.Append("</package>");
sb.Append("</servicing>");
sb.Append("</unattend>");

// Write the string to a file.
System.IO.StreamWriter file = new System.IO.StreamWriter("c:\\test.xml");
file.WriteLine(sb.ToString);

file.Close();

当然,您可以将其解析为XmlReaders和XmlWriters,但是如果您想要完成这项工作而不需要学习很多知识,那么这段代码应该可以帮助您摆脱麻烦。它假设您有一个用于选择标记的键值字典。如果没有,那么只需为每一行添加一行,并使用附加格式将正确的值插入其中。

当孩子们星期一进来的时候,他们会帮你打扫干净的:)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9544213

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档