您当前的位置: 首页 >  unity

十幺卜入

暂无认证

  • 4浏览

    0关注

    119博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

Unity3d C#将字符串string作xml解析时SelectSingleNode一直为空(null)

十幺卜入 发布时间:2021-04-21 15:32:50 ,浏览量:4

前言

在项目中,通过接口调用的返回的xml字符串解析,xml文件结构如下图:



  
    1
    Name1
  
  
    2
    Name2
  
  
    3
    Name3
  

使用SelectSingleNode获取节点时,出现结果总是为空的情况。

用TagName

我是通过查找TagName实现了后续的功能,主要是因为,我这里只需要“id”数据,所以实现方式:

   XmlDocument doc = new XmlDocument();
   doc.LoadXml(xmlstr);
   XmlNodeList nodeList = doc.GetElementsByTagName("id"); 
        //遍历输出.
   foreach (XmlNode node in nodeList)
   {
       string id = node.InnerText;
   }

通过GetElementsByTagName函数查找出节点列表,是完全OK的。

更好的解决

虽然上面的实现方式满足当前的需求,但是要是后续不满足也很蛋疼,经过一段时间的研究,发现是由于xmlns引起,即xml文件的命名空间。 加上命名空间的处理就可以解决,获得正常的数据,不再是NULL:

   XmlDocument doc = new XmlDocument();
   doc.LoadXml(xmlstr);
   XmlNamespaceManager xmlns = new XmlNamespaceManager(doc.NameTable);
   xmlns.AddNamespace("nn", "http://**********");
   XmlNode Nlist = doc.SelectSingleNode("nn:XXList", xmlns);
   XmlNodeList nodeList = Nlist.ChildNodes;
   foreach (XmlNode node in nodeList)
   {
       string id = node.SelectSingleNode("nn:id", xmlns).InnerText;
   }
关注
打赏
1663314737
查看更多评论
立即登录/注册

微信扫码登录

0.1261s