【发布时间】:2014-06-24 20:57:22
【问题描述】:
我在 Sql Server 中有这些数据,我需要将其转换为 XML 文件,每个客户一个。 我有 2 个 sql 查询,客户和消息。
我还有一个作为要求提供的 XSD 文件。
生成此特定 XML 文件的最有效方法是什么?
更新:高效是指快速处理或简单编码。我不太关心速度,因为它们是小文件。谢谢。
这是给我的示例 xml:
<?xml version="1.0" encoding="UTF-8"?>
<Program xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="program.xsd">
<Customer>
<CId>6674</CId>
<ClientName>c1</ClientName>
<SubscriberId>1234</SubscriberId>
</Customer>
<CreatedOn>2014-06-17T19:09:53.960</CreatedOn>
<Message>
<MessageId DeliveryChannel="1">123456</MessageId>
<Prospect>
<Id>12345678</Id>
</Prospect>
<SentDate>2014-06-24T12:00:01</SentDate>
<CName>x1</CName>
<CNameId>1234</CNameId>
</Message>
<Message>
<MessageId DeliveryChannel="2">1236457</MessageId>
<Prospect>
<Id>12345679</Id>
</Prospect>
<SentDate>2014-06-24T12:00:02</SentDate>
<CName>x2</CName>
<CNameId>1235</CNameId>
</Message>
</Program>
架构:
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
<xs:element name="Program">
<xs:complexType>
<xs:sequence>
<xs:element ref="Customer" minOccurs="1" maxOccurs="unbounded"/>
<xs:element name="CreatedOn" type="xs:dateTime" minOccurs="1" maxOccurs="1"/>
<xs:element ref="Message" minOccurs="1" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Customer">
<xs:complexType>
<xs:sequence>
<xs:element name="CId" type="xs:string" minOccurs="1" maxOccurs="1"/>
<xs:element name="ClientName" type="xs:string" minOccurs="1" maxOccurs="1"/>
<xs:element name="SubscriberId" type="xs:integer" minOccurs="1" maxOccurs="1"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Message">
<xs:complexType>
<xs:sequence>
<xs:element ref="MessageId" minOccurs="1" maxOccurs="1"/>
<xs:element ref="Prospect" minOccurs="1" maxOccurs="1"/>
<xs:element name="SentDate" type="xs:dateTime" minOccurs="1" maxOccurs="1"/>
<xs:element name="CName" type="xs:string" minOccurs="1" maxOccurs="1"/>
<xs:element name="CNameId" type="xs:integer" minOccurs="0" maxOccurs="1"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Prospect">
<xs:complexType>
<xs:sequence>
<xs:element ref="Id" minOccurs="1" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Id">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="Source" type="xs:string" default="default"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:simpleType name="DeliveryChannel">
<xs:restriction base="xs:integer">
<xs:enumeration value="1"/>
<xs:enumeration value="2"/>
<xs:enumeration value="4"/>
</xs:restriction>
</xs:simpleType>
<xs:element name="MessageId">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:integer">
<xs:attribute name="DeliveryChannel" type="DeliveryChannel"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
</xs:schema>
【问题讨论】:
-
对于投反对票的人,我想你也不知道答案吧?更容易变得无用。
-
您也可以发布表架构吗?我不能给你一个没有模式的示例查询,特别是不知道表是如何相关的
-
高效是什么意思?计算上?易于编码?我认为从 XSD 生成 C# 文件会非常有效。
-
我在这个帖子中找到了答案:stackoverflow.com/questions/284324/…
标签: c# sql-server xml