Контроллер и писатель app.config

Мне нужна помощь с контролем и написанием app.config. У меня есть латексный проект. И мне нужно написать конфигурацию, чтобы изменить главу моего PDF. Например, у меня есть 3 главы, но мне сейчас не нужно 2 главы. Итак, я хочу \include в моем main tex только \include chap1 а также \include chap3, У меня есть app.config.

 <?xml version="1.0" encoding="utf-8" ?>
    <configuration>
     <appSettings>
        <add key="\include" value="chap1" />
        <add key="\include" value="chap2" />
        <add key="\include" value="chap3" />
     </appSettings>
    </configuration>

Какими методами я могу контролировать и использовать этот конфиг. Это вообще возможно?

Благодарю.

1 ответ

Решение

App.config - это просто файл XML... поэтому для быстрого и простого решения простого файла конфигурации просто отнеситесь к нему так:

using System.Xml.Linq;

// Create a list just in case you want to remove specific elements later
List<XElement> toRemove = new List<XElement>();

// Load the config file
XDocument doc = XDocument.Load("app.config");

// Get the appSettings element as a parent
XContainer appSettings = doc.Element("configuration").Element("appSettings");

// step through the "add" elements
foreach (XElement xe in appSettings.Elements("add"))
{
    // Get the values
    string addKey = xe.Attribute("key").Value;
    string addValue = xe.Attribute("value").Value;

    // if you want to remove it...
    if (addValue == "something")
    {
        // you can't remove it directly in the foreach loop since it breaks the enumerable
        // add it to a list and do it later
        toRemove.Add(xe);
    }
}

// Remove the elements you've selected
foreach (XElement xe in toRemove)
{
    xe.Remove();
}

// Add any new Elements that you want
appSettings.Add(new XElement("add", 
    new XAttribute("key", "\\inculde"),
    new XAttribute("value", "chapX")));

Если вы точно знаете, что вы хотите сделать, вы можете использовать более целенаправленные решения.

Однако для вашего сценария вы можете захотеть загрузить эти элементы add в коллекцию, обработать их как хотите (добавить / удалить / обновить и т. Д.), А затем снова записать их обратно как элементы "add" в файл.config.

Другие вопросы по тегам