我写了以下代码。但是,如果List()Value为null,我无法理解如何不打印空节点。我该怎么办呢?
private TokenValues TokenValues(string emailData)
{
if (!string.IsNullOrWhiteSpace(emailData))
{
XDocument xmldoc = XDocument.Parse(chkData);
var nodes = xmldoc.Descendants().Elements();
if (nodes == null || nodes.Count() == 0) return new TokenValues();
TokenValues tokenvalues = new TokenValues { Tokens = new List<Model2.Token>() };
foreach (XElement node in nodes)
{
Model2.Token token = new Model2.Token { Name = node.Name.ToString(),
Value = node.Value,
Tokens = new List<Model2.Token>()
};
var descendants = node.Descendants();
if (descendants != null && descendants.Count() > 0)
{
foreach (XElement dnode in descendants)
token.Tokens.Add(new Model2.Token { Name = dnode.Name.ToString()
, Value = dnode.Value
, Tokens = new List<Model2.Token>()
}
);
}
tokenvalues.Tokens.Add(token);
}
return tokenvalues;
我的输出文件如下所示:
<Tokens>
<Token>
<Name>first_name</Name>
<Tokens/>
<Value>Antoinette</Value>
</Token>
<Token>
<Name>last_name</Name>
<Tokens/>
<Value>MCGRATH</Value>
</Token>
<Token>
<name>Employee_Details</name>
<Tokens>
<Token>
<name>Address</name>
<Tokens/>
<value>123 xyz</value>
</Token>
<Token>
<name>City</name>
<Tokens/>
<value>Las Vegas</value>
</Token>
</Tokens>
<Value>
123 xyz Las Vegas
</Value>
</Token>
</Token>
如果它为null,我不想打印。
答案 0 :(得分:0)
如何在执行更多逻辑之前预处理XML文档以删除空节点:
XDocument xmldoc = XDocument.Parse(chkData);
var emptyNodes = xmldoc.Descendants().Where(o => o.IsEmpty).ToList();
foreach (XElement n in emptyNodes)
{
n.Remove();
}
//here you can continue with your logic to generate TokenValues
.....
.....