如何取消注释或在 XML/配置文件中添加一行?

Posted

技术标签:

【中文标题】如何取消注释或在 XML/配置文件中添加一行?【英文标题】:How to either uncomment or add a line to an XML/ config file? 【发布时间】:2020-06-28 02:14:50 【问题描述】:

我有以下需要修改的 CONFIG 文件。

<?xml version="1.0"?>
<configuration>
    <appSettings file="%ProgramData%\NCR\RAL\AlhAdmin.exe.config">
        <add key="ConfigurationDataFile" value="AlhAdmin.xml"/>     <!--Config Data Xml File -->
        <!--Log File Details -->
        <!--<add key="ApplicationLogPath" value=""/>-->
        <add key="ApplicationLogName" value="AlhAdmin"/>
        <!--Number of Days to keep log -->
        <add key="ApplicationLogDaysToRetain" value="2"/>
        <!--Port Number to be entered here-->
        <add key="SocketListenPort" value="11000"/>
        <add key="MulticastUDPSendPort" value="11001"/>
        <add key="MulticastUDPSendBroadcastAddress" value="224.168.100.25"/>
        <add key="MulticastUDPListenPort" value="11002"/>
        <add key="MulticastUDPListenBroadcastAddress" value="224.168.100.35"/>
        <add key="DefaultSelTime" value="30"/>
        <add key="DefaultTermSelTime" value="30"/>
        <add key="DefaultLANWaitTime" value="2"/>
        <!--DisplayMessage Form-->
        <add key="MessageDisplayFile" value="DisplayMessages.xml"/>
        <!--RFC: 55071-->
        <add key="UltraVNCFolderPathInFS" value="\ExtData\RAL\UltraVNC"/>
        <add key="StartUpFolderPath" value="C:\Documents and Settings\All Users\Start Menu\Programs\Startup"/>
        <add key="ProgramFileFolderPath" value="C:\Program Files"/>
        <add key="NetworkGroupBMP" value="Network.ico"/>
        <!--RFC: 52790-->
        <add key="DebugLevel" value="25"/>
        <add key="BaseIPToIncr" value="192.168.0"/>
        <add key="BaseIPToIncrSubNet" value="255.255.255.0"/>
        <add key="CheckForConnectedNIC" value="0"/>         <!-- Check for only NICs that are connected /-->
        <add key="AddAdminGroup" value="0"/>
        <add key="SetGatewayInfo" value="1" />    <!-- Wheter order to set the server gateway and DNS entries on the terminal-->
        <add key="CopyRemotely" value="1"/>             <!-- Whether to copy remotely or use Bootdrv share /-->
        <!-- add key="RemoteCopyPort" value="11003" /-->        <!-- Remote copy port on which server is copying /-->
        <!-- add key="ServerIPEntryRequired" value="1" /-->     <!-- Pops the screen to select Server Name/IP /-->
        <!-- add key="QWERTY" value="0" /-->                    <!-- Keyboard style for above screen /-->
        <!-- add key="IPScreenTimeout" value="120" /-->         <!-- Timeout for Server IP Screen /-->
        <!-- add key="Base1stOctet" value="1" /-->              <!-- Start number for the 1st Octet /-->
        <!-- add key="Default1stOctet" value="1" /-->           <!-- Default 1st Octet for IP Screen /-->
        <!-- add key="Default2ndOctet" value="0" /-->           <!-- Default 2nd Octet for IP Screen /-->
        <!-- add key="Default3rdOctet" value="0" /-->           <!-- Default 3rd Octet for IP Screen /-->
        <!-- add key="Default4thOctet" value="1" /-->           <!-- Default 4th Octet for IP Screen /-->
        <!-- add key="DefaultServerName" value="" /-->          <!-- Default Server Name for IP Screen /-->
        <!-- add key="SetEncryptedPassword" value="1" /-->      <!-- Sets password encrypted /-->
        <add key="SetDefaultDomain" value="0" />    <!-- Sets Default domain in the registry /-->
        <!-- add key="BackupData" value="0" /-->    <!-- Backs up  Data folder over to ExtData\RAL\Data /-->
        <!-- add key="DisableAdmin" value="0" /-->    <!-- disables administrator account  /-->
    </appSettings>
    <startup>

    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0,Profile=Client"/></startup>
    <runtime>
        <generatePublisherEvidence enabled="false"/>
    </runtime>
</configuration>

我需要取消注释&lt;!-- add key="ServerIPEntryRequired" value="1" /--&gt; 行或添加同一行而不将其注释掉。我发现的所有内容都是针对常规 XML 文件的,而这似乎不是。

谢谢

【问题讨论】:

这是一个常规的 XML 文件。一点也不奇怪。 同理,本例将&lt;--! something /--&gt;改为&lt;something/&gt; 这能回答你的问题吗? How do I comment out a block of tags in XML? 【参考方案1】:

我想通了:

string fileName = "AlhAdmin.exe.config";
string key = "ServerIPEntryRequired";
string value = "1";
XDocument doc = XDocument.Load(fileName);

XAttribute xkey = new XAttribute("key", key);
XAttribute xvalue = new XAttribute("value", value);
XElement xElement = new XElement("add", xkey, xvalue);
doc.Descendants("appSettings").Last().Add(xElement);

doc.Save(fileName);

【讨论】:

以上是关于如何取消注释或在 XML/配置文件中添加一行?的主要内容,如果未能解决你的问题,请参考以下文章

使用UltraEdit配置多行注释和取消多行注释

vscode如何进行代码注释定制(koroFileHeader)

VS.NET 2005(C#) 如何注释

如何使用 QSettings 向我的配置文件添加注释?

如何在 Vim 的配置文件中注释:“.vimrc”?

Symfony 2 配置文件类型