如何在xml下面生成。 我的要求是ProductionData的自我关闭标记。
必需的输出 -
<Header>
<MeterUnit sno="1" meterid="121">
<ProductionData manufacture="abc"/>
</MeterUnit>
</Header>
Table Details:
Tablename: meterinfo.
Columnname: sno, meterid, manufacture.
Data:1 121 abc
我的查询 -
select xmlelement("Header",
xmlelement("MeterUnit",xmlattributes(sno as sno, meterid as meterid),xmlelement("ProductionData",xmlattributes(manufacture as manufacture))))
from meterinfo;
我的输出
<Header>
<MeterUnit sno="1" meterid="121">
<ProductionData manufacture="abc"></ProductionData>
</MeterUnit>
</Header>
答案 0 :(得分:1)
不要使用XMLRoot,它是作为占位符引入的,而XMLSerialize()函数正在标准化。 您似乎想要添加xml声明。这是XML序列化的一个功能,应该使用XMLSerialize()添加,它将XML对象转换为文本..
答案 1 :(得分:0)
在@MarkDrake sugegsted时,您可以使用XMLSerialize()
代替XMLRoot()
,例如:
select xmlserialize(document xmlelement("Header",
xmlelement("MeterUnit", xmlattributes(sno as sno, meterid as meterid),
xmlelement("ProductionData", xmlattributes(manufacture as manufacture)))
) indent size=2)
from meterinfo;
XMLSERIALIZE(DOCUMENTXMLELEMENT("HEADER",XMLELEMENT("METERUNIT",XMLATTRIBUTES(SN
--------------------------------------------------------------------------------
<Header>
<MeterUnit SNO="1" METERID="121">
<ProductionData MANUFACTURE="abc"/>
</MeterUnit>
</Header>
或
select xmlserialize(document xmlelement("Header",
xmlelement("MeterUnit", xmlattributes(sno as sno, meterid as meterid),
xmlelement("ProductionData", xmlattributes(manufacture as manufacture)))
) version '1.0')
from meterinfo;
XMLSERIALIZE(DOCUMENTXMLELEMENT("HEADER",XMLELEMENT("METERUNIT",XMLATTRIBUTES(SN
--------------------------------------------------------------------------------
<?xml version="1.0"?>
<Header>
<MeterUnit SNO="1" METERID="121">
<ProductionData MANUFACTURE="abc"/>
</MeterUnit>
</Header>
您可能还想了解有关将关系数据转换为XML in the documentation的其他方法的更多信息。