在XMLNSC for XML Array中使用ESQL设置Attribute

时间:2017-11-01 13:22:56

标签: sql xml messagebroker

我成功地在XML元素有一个name="xxxxxx"属性时添加<Broker name="xxxxxx"属性,但是没有重复元素数组。

例如,我可以创建SET OutputRoot.XMLNSC.SystemDetails.BrokerDetails.Broker.(XMLNSC.Attribute)name = FIELDVALUE(InputRoot.XMLNSC.broker.(XMLNSC.Attribute)name); &gt;元素包含以下行:

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

可以使用以下行创建XML元素数组:

<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>

但是不能将这两种方法结合起来创造我想要的东西:

docker exec -it container /bin/bash

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

我无法在一个选择语句中生成您的输出,但有两个可能。

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元素的标量值与List for Servers混合在一起。