【问题标题】:XML Literals with Loops and conditionals带有循环和条件的 XML 文字
【发布时间】:2018-10-30 02:48:31
【问题描述】:

我正在尝试构建一个相对简单的 XML 块以发送到 Web 服务。我正在使用 XML Literals,以下目前工作正常:

Dim OrderXML As XElement =
    <PARAM>
        <FLD NAME="CUSORDREF"><%= CustomerOrderNo %></FLD>
        <FLD NAME="BPCORD"><%= CustomerCode %></FLD>
        <GRP ID="SOH1_5">
            <FLD NAME="YHOLDSTA">3</FLD>
        </GRP>
        <TAB ID="SOH4_1">
            <%= From l In Me.OrderLines
                Select
                    <LIN NUM=<%= l.Key %>>
                        <FLD NAME="ITMREF"><%= l.Value.Sku %></FLD>
                        <FLD NAME="QTY"><%= l.Value.ActualQuantity %></FLD>
                    </LIN>
            %>
        </TAB>
        <GRP ID="ADB2_1">
            <LST NAME="BPRNAM" SIZE="2" TYPE="Char">
                <ITM><%= CustomerName %></ITM>
            </LST>
            <FLD NAME="CRY">GB</FLD>
            <LST NAME="BPAADDLIG" SIZE="3" TYPE="Char">
                <ITM><%= DeliveryAddress1 %></ITM>
                <ITM><%= DeliveryAddress2 %></ITM>
                <ITM><%= DeliveryAddress3 %></ITM>
            </LST>
            <FLD NAME="POSCOD"><%= DeliveryPostcode %></FLD>
            <FLD NAME="CTY"><%= DeliveryCity %></FLD>
            <FLD NAME="SAT"><%= DeliveryRegion %></FLD>
        </GRP>
    </PARAM>

但是,我想添加一个条件,如果某个条件为真,它将仅包含 &lt;LIN&gt; 元素。所以,是这样的:

Dim OrderXML As XElement =
    <PARAM>
        <FLD NAME="CUSORDREF"><%= CustomerOrderNo %></FLD>
        <FLD NAME="BPCORD"><%= CustomerCode %></FLD>
        <GRP ID="SOH1_5">
            <FLD NAME="YHOLDSTA">3</FLD>
        </GRP>
        <TAB ID="SOH4_1">
            <%= From l In Me.OrderLines
                Select
                    <LIN NUM=<%= l.Key %>>
                        <FLD NAME="ITMREF"><%= l.Value.Sku %></FLD>
                        <FLD NAME="QTY"><%= l.Value.ActualQuantity %></FLD>
                    </LIN>
                Where l.Value.ImportLine = True
            %>
        </TAB>
        <GRP ID="ADB2_1">
            <LST NAME="BPRNAM" SIZE="2" TYPE="Char">
                <ITM><%= CustomerName %></ITM>
            </LST>
            <FLD NAME="CRY">GB</FLD>
            <LST NAME="BPAADDLIG" SIZE="3" TYPE="Char">
                <ITM><%= DeliveryAddress1 %></ITM>
                <ITM><%= DeliveryAddress2 %></ITM>
                <ITM><%= DeliveryAddress3 %></ITM>
            </LST>
            <FLD NAME="POSCOD"><%= DeliveryPostcode %></FLD>
            <FLD NAME="CTY"><%= DeliveryCity %></FLD>
            <FLD NAME="SAT"><%= DeliveryRegion %></FLD>
        </GRP>
    </PARAM>

但我似乎无法使语法正确。

谁能帮忙?

【问题讨论】:

  • ♪♪ ᴥ 小猫的鼻子和柔软的羊毛手套...♪♪

标签: xml vb.net xml-literals


【解决方案1】:

将 Where 移至 From

例如

Dim nums() As Integer = {1, 2, 3, 4, 5}
Dim xe As XElement
xe =  <root>
        <tab>
            <%= From i In nums Where i Mod 2 = 1
                Select <lin><%= i.ToString %></lin>
            %>
        </tab>
      </root>

你的代码看起来像

<%= From l In Me.OrderLines Where l.Value.ImportLine = True
    Select
        <LIN NUM=<%= l.Key %>>
            <FLD NAME="ITMREF"><%= l.Value.Sku %></FLD>
            <FLD NAME="QTY"><%= l.Value.ActualQuantity %></FLD>
        </LIN>
%>

【讨论】:

  • 完美 - 非常感谢。我确信我已经尝试过,但显然我没有!
猜你喜欢
  • 2017-07-11
  • 1970-01-01
  • 1970-01-01
  • 2021-05-23
  • 2016-05-14
  • 1970-01-01
  • 2014-04-30
  • 2021-07-06
  • 1970-01-01
相关资源
最近更新 更多