在 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 元素的标量值与服务器列表混合在一起。
我成功地向 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 元素的标量值与服务器列表混合在一起。