从多行的 XML 中获取结果 [英] Get Resutls from XML with more than one line

查看:21
本文介绍了从多行的 XML 中获取结果的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想为每个订单获取订单行,并将它们作为表格发送到电子邮件正文中

I want get Order Lines for each Order and bring them to an EMail Body as Table like

值 1 |值 2 |值 3

Value 1 | Value 2 | Value 3

12345 ABC X1_

12345 ABC X1_

XML 代码:

<?xml version="1.0" encoding="utf-8"?><UniversalInterchange xmlns= "http://www.designworker/namespace" version="1.1">
    <Header> </Header>
    <Body>
        <UniversalShipment xmlns="http://www.designworker/namespace" version="1.1">
            <Shipment>
                <DataContext>
                    <DataTargetCollection>
                        <DataTarget>
                            <Type>SMTPTYPE</Type>
                        </DataTarget>
                    </DataTargetCollection>
                </DataContext>
                <Order>
                    <OrderNumber>99348234234</OrderNumber>
                    <OrderLineCollection>
                        <OrderLine>
                            <LineNumber>1</LineNumber> 
                            <OrderedQty>455.000</OrderedQty>
                            <OrderedQtyUnit>
                                <Code>MORE</Code>
                            </OrderedQtyUnit>
                            <Product>
                                <Code>999LAM01</Code> 
                                <Description>New Design Work</Description>
                            </Product>
                            <QuantityMet>1.000</QuantityMet> 
                            <ShortfallQuantity>0</ShortfallQuantity> 
                        </OrderLine>
                        <OrderLine>
                            <LineNumber>2</LineNumber> 
                            <OrderedQty>655.000</OrderedQty>
                            <OrderedQtyUnit>
                                <Code>SOME</Code>
                            </OrderedQtyUnit>
                            <Product>
                                <Code>999LAM02</Code> 
                                <Description>OLD Design Work </Description>
                            </Product>
                            <QuantityMet>3.000</QuantityMet> 
                            <ShortfallQuantity>45</ShortfallQuantity> 
                        </OrderLine>
                    </OrderLineCollection>
                </Order>
            </Shipment>
        </UniversalShipment>
    </Body>
</UniversalInterchange>

我试图用这个代码解决这个问题:

I have tried to solve this with this code:

var xDoc = XDocument.Parse(xmlValue);
            XNamespace nsp = ns;
            try
            {
                var value = xDoc
                    .Element(nsp + "UniversalInterchange")
                    .Element(nsp + "Body")
                    .Element(nsp + "UniversalShipment")
                    .Element(nsp + "Order")
                    .Element(nsp + "OrderLine")
                    .Element(nsp + "LineNumber")
                    .Value;
                return value;

但是当我的订单中有不止一行时,它就不起作用了.我怎样才能以更好的方式解决这个问题?

But when I have more than one Line in the Order it won't work. How can I solve this on a better way ?

推荐答案

看起来导航路径缺少一些 .Element() 调用.

Looks like the navigation path is missing a few .Element()-calls.

var orderLines = xDoc
   .Element(nsp + "UniversalInterchange")
   .Element(nsp + "Body")
   .Element(nsp + "UniversalShipment")
   .Element(nsp + "Shipment")
   .Element(nsp + "Order")
   .Element(nsp + "OrderLineCollection")
   .Elements(nsp + "OrderLine");

// 1, 2
var lineNumbers = orderLines.Select(x => x.Element(nsp + "LineNumber").Value);

只要没有找到元素,.Element() 就会返回 null.如果您需要多个条目,您还应该使用 .Elements() 而不是 .Element().

Whenever an element isn't found, null is returned from .Element(). You should also use .Elements() instead of .Element() if you expect multiple entries.

这篇关于从多行的 XML 中获取结果的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆