【发布时间】:2014-07-22 03:52:57
【问题描述】:
我已经编写了以下代码。但是如果 List() 值为空,我无法理解如何不打印空节点。我该怎么做?
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>
如果它为空,我不想打印。
【问题讨论】:
-
您是如何生成 XML 输出的?
-
@har07 - 我在 chkData 中有一个以字符串格式存储的 xml
-
据我所知,您的代码正在解析 XML 并生成
TokenValues对象。但是您的问题是关于 production XML 而不是解析。 -
@har07 - 抱歉,如果问题不清楚。我的问题是,在将 XML 解析为 TokenValues 对象时,即使它为 Null,
也会显示出来,我不希望这样。
标签: c# xml linq-to-xml xelement