c# – LINQ Xelement当子节点存在时返回null
发布时间:2020-12-15 17:51:21 所属栏目:百科 来源:网络整理
导读:我有一个像这样的 XML文件,我想读取ID,短名称,名称节点值. ?xml version="1.0" encoding="UTF-8" standalone="yes" ? AccountingUnitList xmlns="http://www.google.com"AccountingUnitID17406/ID ShortNametest/ShortName Nametest/Name /AccountingUnitAcc
我有一个像这样的
XML文件,我想读取ID,短名称,名称节点值.
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?> <AccountingUnitList xmlns="http://www.google.com"> <AccountingUnit> <ID>17406</ID> <ShortName>test</ShortName> <Name>test</Name> </AccountingUnit> <AccountingUnit> <ID>18006</ID> <ShortName>ANOTHERtest</ShortName> <Name>Anothertest</Name> </AccountingUnit> <AccountingUnit> <ID>18046</ID> <ShortName>RKU</ShortName> <Name>hospital</Name> </AccountingUnit> <AccountingUnit> <ID>18047</ID> <ShortName>MNU</ShortName> <Name>MNU</Name> </AccountingUnit> </AccountingUnitList> 递归读取Node元素的最佳方法是什么? 这就是我尝试读取Node值的方法: var accountingunit = ( from e in XDocument.Parse(textresult).Root.Elements("AccountingUnit") select new node { idvalue = (string)e.Element("ID"),shortname =(string)e.Element("ShortName"),name = (string)e.Element("Name"),}); foreach(var unit in accountingunit) { Console.WriteLine("ID"+ unit.idvalue + unit.name + unit.shortname); } 这是节点consructor: public class node { public string idvalue { get; set; } public string shortname { get; set; } public string name { get; set; } } 解决方法
您的文档中有一个xml命名空间.ContetingUnitList的所有子元素都继承了命名空间,因此您需要通过元素名称指定它:
XNamespace ns = "http://www.google.com"; var accountingunit = ( from e in XDocument.Parse(textresult).Elements(ns + "AccountingUnit") select new node { idvalue = (string)e.Element(ns + "ID"),shortname =(string)e.Element(ns + "ShortName"),name = (string)e.Element(ns + "Name"),}); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |