在 XMLNSC 中为 XML 数组使用 ESQL 设置属性

Set Attribute with ESQL in XMLNSC for XML Array

我成功地向 XML 元素添加了 name="xxxxxx" 属性,但对于重复元素的数组却没有。

例如,我可以使用以下行创建一个 <Broker name="xxxxxx"> 元素:

SET OutputRoot.XMLNSC.SystemDetails.BrokerDetails.Broker.(XMLNSC.Attribute)name = 
FIELDVALUE(InputRoot.XMLNSC.broker.(XMLNSC.Attribute)name);

并且可以使用以下行创建 XML 个元素的数组:

SET OutputRoot.XMLNSC.SystemDetails.BrokerDetails.Servers.Server[] = 
    SELECT ITEM FIELDVALUE(A.(XMLNSC.Attribute)name)
    FROM InputRoot.XMLNSC.broker.executionGroups.executionGroup[] AS A;

给出:

<SystemDetails>
     <BrokerDetails>
           <Broker name="xxxxxx" />
           <Servers>
                <Server>xxx1</Server>
                <Server>xxx2</Server>
                <Server>xxx3</Server>
                <Server>xxx4</Server>
           </Servers>
     </BrokerDetails>
</SystemDetails>

但是不能结合这两种方法来创建我想要的如下:

<SystemDetails>
     <BrokerDetails>
           <Broker name="xxxxxx" />
           <Servers>
                <Server name="xxx1" />
                <Server name="xxx2" />
                <Server name="xxx3" />
                <Server name="xxx4" />
           </Servers>
     </BrokerDetails>
</SystemDetails>

如有任何帮助,我们将不胜感激。

我无法在一个 select 语句中产生你的输出,但有两个是可能的。

SET OutputRoot.XMLNSC.SystemDetails.BrokerDetails.Broker.(XMLNSC.Attribute)name = 
    SELECT ITEM R.(XMLNSC.Attribute)name FROM InputRoot.XMLNSC.broker AS R;  

SET OutputRoot.XMLNSC.SystemDetails.BrokerDetails.Servers.Server[] =  
    SELECT FIELDVALUE(A.(XMLNSC.Attribute)name) AS (XMLNSC.Attribute)name FROM   
       InputRoot.XMLNSC.broker.executionGroups.executionGroup[] AS A;

结果如下。

<SystemDetails>
    <BrokerDetails>
        <Broker name="DEV.ADAP2B"/>
        <Servers>
           <Server name="JumpStart"/>
           <Server name="SMUDGER"/>
        </Servers>
    </BrokerDetails>
</SystemDetails>  

我不确定您是否可以在一个 select 语句中做到这一点,因为您将 Broker 元素的标量值与服务器列表混合在一起。