当前位置:编程学习 > C#/ASP.NET >>

载入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); 
--------------------编程问答--------------------
引用 10 楼 mademelaugh 的回复:
.net2.0下
XmlReaderSettings   settings=   new   XmlReaderSettings   ();
settings.IgnoreComments=   true;         //忽略注释
XmlReader   reader   =   XmlReader.Create( "itemDTD.xml ",   settings);
doc.……

学习了 --------------------编程问答--------------------
引用 12 楼 bclz_vs 的回复:
引用 10 楼 mademelaugh 的回复:

.net2.0下
XmlReaderSettings settings= new XmlReaderSettings ();
settings.IgnoreComments= true; //忽略注释
XmlReader reader = XmlReader.Create( "itemDTD.xml ", settings);
doc……



我也喜欢牛哥~~~ --------------------编程问答-------------------- 不错不错!!!! --------------------编程问答-------------------- 这个要收藏了!!!!
补充:.NET技术 ,  C#
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,