载入XML文件时如何自动忽略XML中的注释?
如果注释不被忽略,那么XmlComment和XmlElement在同一个XmlNodeList中,不方便处理希望能在使用XmlDocument.Load方法时就自动忽略注释,是否有这样的方法?
如果没有,读入后怎样删除整个文档中的注释?
谢谢解答。
即忽略xml文件中<!--comment-->这样的节点。 --------------------编程问答-------------------- 也来学习下 --------------------编程问答-------------------- //--添加如下函数
string ChangeWithDoubleFlag(string MainText, string FlagStart, string FlagEnd)
{
string str = MainText;
string chgValue;
string returnValue;
int Fi1 = -1;//First Flag Index;
int Fi2 = -1;//Second Flag Index;
Fi1 = str.IndexOf(FlagStart);
if (Fi1 != -1)
Fi2 = str.IndexOf(FlagEnd, Fi1);
if (Fi1 != -1 && Fi2 != -1)
{
chgValue = str.Remove(Fi1, Fi2 - Fi1 + FlagEnd.Length);
returnValue = ChangeWithDoubleFlag(chgValue, FlagStart, FlagEnd);
}
else
{
returnValue = MainText;
}
return returnValue;
}
string ChangeWithSingleFlag(string MainText, string Flag)
{
string str = MainText;
string chgValue;
int Fi1 = -1;//First Flag Index;
int Fi2 = -1;//Second Flag Index;
string returnValue = "";
Fi1 = str.IndexOf(Flag);
if (Fi1 != -1)
Fi2 = str.IndexOf("\r\n", Fi1);
if (Fi1 != -1 && Fi2 != -1)
{
chgValue = str.Remove(Fi1, Fi2 - Fi1 + 2);
returnValue = ChangeWithSingleFlag(chgValue, Flag);
}
else
returnValue = MainText;
return returnValue;
}
//--使用
System.IO.StreamReader Fs = new StreamReader(yourXmlFilePath);
string sxml = Fs.ReadToEnd();
string strRemark = "<!--..-->";
string[] RemarkFlag = Regex.Split(strRemark, ",");
for (int i = 0; i <= RemarkFlag.GetUpperBound(0); i++)
{
string Rf = RemarkFlag[i];
if (Rf.IndexOf("..") != -1)
{
string Flag1 = Rf.Substring(0, Rf.IndexOf(".."));
string Flag2 = Rf.Substring(Rf.IndexOf("..") + 2, Rf.Length - Rf.IndexOf("..") - 2);
sxml = ChangeWithDoubleFlag(sxml, Flag1, Flag2);
}
else
{
sxml = ChangeWithSingleFlag(sxml, Rf);
}
}
//--执行你的操作 --------------------编程问答-------------------- 公司名称:北京国网中电自动化技术有限公司
公司业务:软件开发
招聘人员:后台编码人员
招聘数量:2
招聘范围:应届生 或 有相关工作经验1~2年以上(优先考虑)
人员要求:熟悉Asp.Net 、Eclipse等开发环境,熟悉SqlServer、DB2等数据库的应用,能够熟练应用C#、Java 语言进行编码,具有快速上手能力,具有团队开发能力和吃苦耐劳精神,熟悉设计模式并参与过系统架构设计者优先!
联系人:赵先生
Email:hr@bjgwzd.com
公司名称:北京国网中电自动化技术有限公司
公司业务:软件开发
招聘人员:前台美工设计人员
招聘数量:1
招聘范围:应届生 或 有相关工作经验1~2年以上(优先考虑)
人员要求:了解软件开发流程,熟练网页设计和制作。
其他要求:面试时须带上相关作品
联系人:赵先生
Email:hr@bjgwzd.com
--------------------编程问答-------------------- 强烈鄙视ls的垃圾 --------------------编程问答-------------------- 感谢hertcloud
但这种自己预处理字符串的方法总觉得不够优雅
使用xml类库直接删掉XmlComment类别的节点甚至更好点
这样看来.net并没有直接提供此类功能,呵呵
我先在使用节点时检查一下吧。 --------------------编程问答-------------------- 学习中 --------------------编程问答-------------------- XmlNodeList,你的xpath查询不对吧? --------------------编程问答-------------------- 使用节点时检查一下,LZ 只有辛苦一点了 --------------------编程问答-------------------- up --------------------编程问答-------------------- .net2.0下
XmlReaderSettings settings= new XmlReaderSettings ();
settings.IgnoreComments= true; //忽略注释
XmlReader reader = XmlReader.Create("itemDTD.xml", settings);
doc.Load(reader);
--------------------编程问答-------------------- XmlDocument xDom = new XmlDocument();
XmlReaderSettings settings = new XmlReaderSettings();
settings.IgnoreComments = true;
XmlReader reader = XmlReader.Create(xmlFilePath, settings);
xDom.Load(reader);
--------------------编程问答--------------------
学习了 --------------------编程问答--------------------
我也喜欢牛哥~~~ --------------------编程问答-------------------- 不错不错!!!! --------------------编程问答-------------------- 这个要收藏了!!!!
补充:.NET技术 , C#