解析xml文件 selectSingleNode取不到节点

今天在做批量生成XML的时候,碰到一个情况 解析xml文件 selectSingleNode一直返回NULL。

XML的格式开头有一句这个<CE401Message xmlns="http://">

取节点的语句 

System.Xml.XmlNode nodes = doc.SelectSingleNode("/CE401Message/aa/bb/cc"); 返回空

给他加上命名空间

System.Xml.XmlNamespaceManager nsmgr = new System.Xml.XmlNamespaceManager(doc.NameTable);
            nsmgr.AddNamespace("ns", "http://");//刚开始我是这样写  nsmgr.AddNamespace("xmlns", "http://"); 程序报错说什么前辍不能加,一直搞不懂为什么是加ns
            System.Xml.XmlNode root = doc.SelectSingleNode("ns:CE401Message/ns:aa/ns:bb/ns:cc", nsmgr);

 

转载于:https://www.cnblogs.com/niyl/p/9093688.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C#中解析XML文件有两种方式:XmlDocument和XmlReader。 1. 使用XmlDocument解析XML文件 XmlDocument是一种基于树形结构的解析方式,可以将整个XML文档加载到内存中,然后通过操作节点的方式来访问XML文档中的数据。 以下是一个使用XmlDocument解析XML文件的例子: ```csharp XmlDocument xmlDoc = new XmlDocument(); xmlDoc.Load("file.xml"); // 加载XML文件 XmlNodeList nodeList = xmlDoc.SelectNodes("//book"); // 选择所有book节点 foreach (XmlNode node in nodeList) { string title = node.SelectSingleNode("title").InnerText; // 获title节点的文本内容 string author = node.SelectSingleNode("author").InnerText; // 获author节点的文本内容 Console.WriteLine("Title: {0}, Author: {1}", title, author); } ``` 2. 使用XmlReader解析XML文件 XmlReader是一种基于流的解析方式,可以逐个节点地读XML文档中的数据,不需要将整个XML文档加载到内存中。 以下是一个使用XmlReader解析XML文件的例子: ```csharp XmlReaderSettings xmlReaderSettings = new XmlReaderSettings(); xmlReaderSettings.IgnoreWhitespace = true; // 忽略空白 xmlReaderSettings.IgnoreComments = true; // 忽略注释 using (XmlReader xmlReader = XmlReader.Create("file.xml", xmlReaderSettings)) { while (xmlReader.Read()) { if (xmlReader.NodeType == XmlNodeType.Element && xmlReader.Name == "book") { string title = xmlReader.GetAttribute("title"); // 获title属性的值 string author = xmlReader.GetAttribute("author"); // 获author属性的值 Console.WriteLine("Title: {0}, Author: {1}", title, author); } } } ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值