我正在使用 LINQ to XML 生成 XML 文档文档。我希望 XML 文档最小化,即应该省略很少使用的属性。目前,我正在这样做:
XElement element = new XElement("myelement",
new XAttribute("property1", value1),
new XAttribute("property2", value2));
if (!string.IsNullOrEmpty(rareValue1))
{
element.Add(new XAttribute("rareProperty1", rareValue1));
}
if (!string.IsNullOrEmpty(rareValue2))
{
element.Add(new XAttribute("rareProperty2", rareValue2));
}
if (!string.IsNullOrEmpty(rareValue3))
{
element.Add(new XAttribute("rareProperty3", rareValue3));
}
但实际上,如果想省略“if”语句,因为它们不是很优雅,并且与 LINQ to XML 哲学相矛盾,在这种哲学中,您可以通过嵌套来轻松创建 XML 树,如在 XML 中创建树中所述。所以,我想做这样的事情:
XElement element = new XElement("myelement",
new XAttribute("property1", value1),
new XAttribute("property2", value2),
new XAttribute("rareProperty1", string.IsNullOrEmpty(rareValue1) ? Flag.Omit : rareValue1),
new XAttribute("rareProperty2", string.IsNullOrEmpty(rareValue2) ? Flag.Omit : rareValue1),
new XAttribute("rareProperty3", string.IsNullOrEmpty(rareValue3) ? Flag.Omit : rareValue1),
);
即 C# 源代码包含myelement
其构造函数内部的所有子属性。并且Flag.Omit
会以某种方式指示 LINQ-to-XML 不生成 XML 属性。
这可以使用标准 LINQ to XML 还是使用一些通用实用程序功能?