【发布时间】:2014-07-16 10:09:20
【问题描述】:
全部
我对xml的经验很少,所以请温柔。
情况是我们使用一个名为 dataswitch 的应用程序来获取 xml 并通过业务对象将其处理到我们的 ERP 系统中。
我试图重新创建的输出如下来自示例 xml 文档。
**<?xml version="1.0" encoding="Windows-1252" ?>
- <IssueDetails Language="05" CssStyle="" DecFormat="1" DateFormat="01" Role="01" Version="6.0.000">**
- <Item>
<Job>00000121</Job>
<NonStocked>N</NonStocked>
<Warehouse>RM</Warehouse>
<StockCode>BBMB100</StockCode>
<Line>00</Line>
<QuantityToIssue>1.000</QuantityToIssue>
</Item>
</IssueDetails>
到目前为止,我一直在使用 For xml Path 方法来构建我的查询,并使用了从 Phil Factor 到 write the output 的 sp
到目前为止,我已经成功创建了一个在浏览器中打开的 xml 文档(需要多次尝试!)
这是我设法创建的输出,请注意顶行不同
**<IssueDetails xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">**
- <Item>
<Job>00044816</Job>
<NonStocked>N</NonStocked>
<Warehouse>C2</Warehouse>
<StockCode>FG00707</StockCode>
<Line>00</Line>
<QuantityToIssue>400.000000000</QuantityToIssue>
</Item>
- <Item>
<Job>00044816</Job>
<NonStocked>N</NonStocked>
<Warehouse>C2</Warehouse>
<StockCode>FG00707</StockCode>
<Line>00</Line>
<QuantityToIssue>10.000000000</QuantityToIssue>
</Item>
</IssueDetails>
所以我的问题是如何让输出中的第一行与示例输出相同?
下面列出了我的程序
Declare
@XML_1 varchar (max),
@myXML varchar(max),
@myFile varchar (30),
@Path varchar (100)
set @XML_1=''
set @myFile ='MaterialIssuesTest.xml'
set @Path='D:\Temp\'
--Query database for materials
Set @XML_1 =@XML_1 + ( SELECT WJM.[Job]
,Case when WJM.[Warehouse]='**' then 'Y' else 'N' end as NonStocked
,WJM.[Warehouse]
,rtrim(LP.StockCode) as StockCode
,WJM.[Line]
,[UnitQtyReqd]*LP.LQtyComplete as QuantityToIssue
FROM [SysproCompanyR].[dbo].[WipJobAllMat] WJM
inner join CHC_Production.LabPostsAtMileOps LP On WJM.Job=LP.Job
Where WJM.Job in ('00044816')and (WJM.OperationOffset > LP.PrevOp
and WJM.OperationOffset<LP.LOperation)
FOR XML Path ('Item'),ROOT ('IssueDetails'), ELEMENTS XSINIL
)
set @myXML = LTRIM(rtrim(@XML_1))
--Debug print xml
Print @myXML
--Output xml to document
execute dbo.spWriteStringToFile @myXML, @Path, @myFile
GO
【问题讨论】:
标签: sql sql-server xml sql-server-2008