我正在使用Linq-To-XML创建一个XDocument,如下所示:
Order order = GetOrder();
XDocument doc = new XDocument(
new XElement("purchaseOrder",
new XElement("Name", order.Name),
new XElement("Address", order.Address),
new XElement("Shipper", order.Shipper)
)
);
因此,有时订单不会有托运人,它将为空。在这种情况下,我根本不想包含Shipper元素。
创建文档时如何在我的代码中内联?
答案 0 :(得分:4)
只需检查Shipper
值是否为空。如果不是,则添加元素,否则只需将其设置为null。构造函数中的空值转换为在其位置添加的任何内容。
Order order = GetOrder();
XDocument doc = new XDocument(
new XElement("purchaseOrder",
new XElement("Name", order.Name),
new XElement("Address", order.Address),
order.Shipper != null ? new XElement("Shipper", order.Shipper) : null
)
);
答案 1 :(得分:3)
我会在部分形成xml,而不是一次形成所有部分。 (更易于阅读,更易于调试)
XDocument doc = new XDocument();
var order = new XElement("purchaseOrder",
new XElement("Name", order.Name),
new XElement("Address", order.Address));
if(order.Shipper!=null) order.Add(new XElement("Shipper", order.Shipper));
doc.Add(order);
答案 2 :(得分:1)
我会有这样的事情:
Order order = GetOrder();
XDocument doc = new XDocument(
new XElement("purchaseOrder",
new XElement("Name", order.Name),
new XElement("Address", order.Address),
OptionalXElement("Shipper", order.Shipper)
)
);
有时候我有一个XElement的子类(自动添加命名空间),并为其添加静态助手:
MyXElement.CreateIfNeeded("Shipper", order.Shipper);