ดังที่เราทุกคนทราบกันดีว่า Microsoft จะเพิ่มสคีมาให้กับแต่ละโหนดของ WebService ที่จัดส่งโดยชุดข้อมูล ดังนั้นจึงเข้ากันไม่ได้กับ j2ee และ flash ดังนั้นฉันจึงพบวิธีแปลงให้เป็น xml ธรรมดา รหัสจะเป็นดังนี้:
วิธีที่ 1:
Public Class DataSetToXML : สืบทอด System.Web.UI.Page
Private Sub Page_Load (ผู้ส่ง ByVal As System.Object, ByVal e As System.EventArgs) จัดการ MyBase.Load
Dim objConn เป็น SqlConnection
Dim strSql As String
strSql = "เลือก 10 อันดับแรก * จากลูกค้า"
objConn = SqlConnection ใหม่ (ConfigurationSettings.AppSettings ("ConnectionString"))
หรี่ sdaCust เป็น SqlDataAdapter ใหม่ (strSql, objConn)
Dim dstCust เป็นชุดข้อมูลใหม่ ()
sdaCust.Fill (dstCust, "ลูกค้า")
'บันทึกข้อมูลลงในไฟล์ xml และไฟล์สคีมา
dstCust.WriteXML (Server.MapPath ("Customers.xml"), XmlWriteMode.IgnoreSchema)
dstCust.WriteXMLSchema (Server.MapPath ("ลูกค้า xsd"))
End Sub
วิธีนี้คือการเขียนไฟล์ xml
วิธีที่สอง:
<WebMethod(Description:="รายชื่อห้องเรียนทั้งหมด")> _
ฟังก์ชั่นสาธารณะ ListAllRooms()
ลอง
ใช้ XmlDocument
m_CpCourseArrange.FillRoomId(m_DsCourseArrange)
'เครื่องอ่าน Dim เป็น MemoryStream ใหม่
Dim doc เป็น XmlDocument ใหม่
doc.LoadXml(m_DsCourseArrange.GetXml.ToString)
ส่งคืนเอกสาร
Catch อดีตเป็น Protocols.SoapException
โยน SoapExceptionE.RaiseException ("ListAllRooms", " http://tempuri.org/CourseArrange ", อดีตข้อความ, "4000", อดีตแหล่งที่มา, SoapExceptionE.FaultCode.Server)
สิ้นสุดการลอง
ฟังก์ชันสิ้นสุด
GetXML--ส่งคืนการแสดง XML ของข้อมูลที่จัดเก็บไว้ในชุดข้อมูล (MSDN)
ส่วนตัวย่อยที่ใช้ร่วมกัน DemonstrateGetXml()
' สร้างชุดข้อมูลด้วยหนึ่งตารางที่มีสองคอลัมน์และ 10 แถว
Dim ds As DataSet = ชุดข้อมูลใหม่ ("myDataSet")
Dim t As DataTable = ds.Tables.Add("รายการ")
t.Columns.Add("id", Type.GetType("System.Int32"))
t.Columns.Add("Item", Type.GetType("System.String"))
' เพิ่มสิบแถว
หรี่แสงเป็น DataRow
หรี่ฉันเป็นจำนวนเต็ม
สำหรับฉัน = 0 ถึง 9
r = t.NewRow()
r("id") = ฉัน
r("รายการ")= "รายการ" & i
t.แถว.เพิ่ม(r)
ถัดไป
' แสดงเนื้อหาชุดข้อมูลเป็น XML
Console.WriteLine(ds.GetXml())
จบหมวดย่อย
ดูเหมือนว่าคุณไม่ต้องกังวลกับการแปลงเมื่อส่งผ่านชุดข้อมูลในอนาคต