如何解决如何用System.XML注释C#中XML文件的一行
|| 我需要使用System.XML属性注释和取消注释该XML文件的第四行:<?xml version=\"1.0\" encoding=\"utf-8\"?>
<configuration>
<system.web>
<customErrors mode=\"On\" defaultRedirect=\"som_url_here\" />
</system.web>
</configuration>
所需的输出:
<!-- <customErrors mode=\"On\" defaultRedirect=\"som_url_here\" /> -->
是否可以不使用文件阅读器来实现?
节点:
XmlNode xmlNodoCE = docWebConfig.DocumentElement.SelectSingleNode(\"system.web/customErrors\");
解决方法
你需要
将文件加载到XmlDocument中,
检索您要评论的节点,
创建一个包含原始节点的XML内容的注释节点,
将此注释添加到原始节点的父节点之前
从其父级中删除它,
将XmlDocument写入文件(同一个文件)。
String xmlFileName = \"Sample.xml\";
// Find the proper path to the XML file
String xmlFilePath = this.Server.MapPath(xmlFileName);
// Create an XmlDocument
System.Xml.XmlDocument xmlDocument = new System.Xml.XmlDocument();
// Load the XML file in to the document
xmlDocument.Load(xmlFilePath);
// Get the target node using XPath
System.Xml.XmlNode elementToComment = xmlDocument.SelectSingleNode(\"/configuration/system.web/customErrors\");
// Get the XML content of the target node
String commentContents = elementToComment.OuterXml;
// Create a new comment node
// Its contents are the XML content of target node
System.Xml.XmlComment commentNode = xmlDocument.CreateComment(commentContents);
// Get a reference to the parent of the target node
System.Xml.XmlNode parentNode = elementToComment.ParentNode;
// Replace the target node with the comment
parentNode.ReplaceChild(commentNode,elementToComment);
xmlDocument.Save(xmlFilePath);
, 这应该可以解决问题。它是一个控制台应用程序,但原理完全相同。它确实假定名为\“ web.config \”的文件将与exe位于同一文件夹中:
using System;
using System.Xml;
namespace ConsoleApplication7
{
class Program
{
static void Main(string[] args)
{
var document = new XmlDocument();
document.Load(\"web.config\");
var element = document.SelectSingleNode(\"//compilation[@defaultLanguage = \'c#\' and @debug = \'true\']\");
var comment = document.CreateComment(element.OuterXml);
element.ParentNode.ReplaceChild(comment,element);
document.Save(\"web.config2\");
var document2 = new XmlDocument();
document2.Load(\"web.config2\");
var comment2 = document2.SelectSingleNode(\"//system.web/comment()\");
var newNode = document2.CreateDocumentFragment();
newNode.InnerXml = comment2.InnerText;
comment2.ParentNode.ReplaceChild(newNode,comment2);
document2.Save(\"web.config3\");
Console.ReadKey();
}
}
}
它保存到不同的文件中以显示xml的进度,显然,您只想保存回原始文件。
编辑:自从我写下答案以来,您更改了xml,但如果更改xpath,则它应该完全一样。
, 这里的问题是“ 5”是用于加载XML的数据结构,它在解析文件时不会读入注释。您正在尝试编辑文件本身。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。