0

我正在使用 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 元素。

创建文档时如何在我的代码中内联?

4

3 回答 3

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
    )
);
于 2013-09-03T23:03:50.637 回答
3

我会部分地形成 xml,而不是一次形成所有的 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);
于 2013-09-03T23:06:02.553 回答
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);
于 2013-09-04T01:45:20.500 回答