存在XElement并且XElement中的Value不为Null

本文关键字:XElement 不为 Null Value 中的 并且 存在 | 更新日期: 2023-09-27 18:01:45

我必须解析一个大Xml数据。下面是我的Xml数据的小例子

<Orders>
 <PersonalData>
   <Id>1</Id>
   <WhoOrderedName>
       <FirstName>abc</FirstName>
       <MiddleName/>
       <LastName>xyz</LastName>
   </WhoOderedName>
 </PersonalData>
   .....
</Orders>

我必须验证每个元素是否存在,以及值是否为空。现在我能够以这种方式实现它,但是有没有更好的方法来验证元素的存在和值不为空。下面是我的代码

XDocument xml = XDocument.Parse(xmldata)
if (xml.Descendants("PersonalData").Elements("Id").Any())
{
    if (!string.IsNullOrWhiteSpace(xml.Descendants("PersonalData").Elements("Id").First().Value))
        OrdersXml += xml.Descendants("PersonalData").Elements("Id").First(); //adding the XElement to another xml string
    else
       Errordetails += "'r'n Id is Null";
}
else
   Errordetails += "'r'n Id element is required";

存在XElement并且XElement中的Value不为Null

好吧,下面的方法需要稍微少一些代码,它不会每次都从xml中查询元素(不像你的方法):

XDocument xml = XDocument.Parse(xmldata)
var id = xml.Descendants("PersonalData").Elements("Id").FirstOrDefault();
if (id != null)
{
    if (!string.IsNullOrWhiteSpace(id.Value))
        OrdersXml += id;
    else
       Errordetails += "'r'n Id is Null";
}
else
   Errordetails += "'r'n Id element is required";

这就是我的看法,但是您应该使用XSD模式。

foreach(var personalData in xdoc.Element("Orders").Descendants()){
      if(personalData.Value == null){
        //error? 
      }
}