написать документ XML из приложения C #? - PullRequest
0 голосов
/ 03 марта 2012

У меня есть программа на C #, которая собирает системную информацию. Все это полностью, кроме записи в XML-файл. Я передал System version, IE version and Regedit версию в "ints" и "strings". Теперь у меня проблема с записью вывода в два файла:

  1. Sys_info.xml - Системная информация, сгенерированная программой
  2. unattend.xml - Для настройки IIS, в которой используются переменные из программы

IIS unattended.xml находится здесь: http://learn.iis.net/page.aspx/133/using-unattended-setup-to-install-iis/

Печально то, что я не программист, а парень, который написал это, в отпуске

В любом случае, вот код xml для unattended.xml:

<?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>

1 Ответ

0 голосов
/ 17 марта 2012

Это самая дешевая (выполняемая работа) вещь, которую вы можете сделать.

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, но если вы хотите, чтобы работа была выполнена, не изучая много.этот код должен избавить вас от неприятностей.Предполагается, что у вас есть словарь ключевых значений для тегов выбора.если вы этого не сделаете, просто добавьте строку для каждого и используйте формат добавления, чтобы вставить правильные значения.

Когда мальчики придут в понедельник, они очистят его для вас:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...