ฉันสามารถสร้างคลาส C # จากไฟล์ XML ได้หรือไม่
ฉันสามารถสร้างคลาส C # จากไฟล์ XML ได้หรือไม่
คำตอบ:
ใช่โดยใช้xsd.exe
D:\temp>xsd test.xml
Microsoft (R) Xml Schemas/DataTypes support utility
[Microsoft (R) .NET Framework, Version 4.0.30319.1]
Copyright (C) Microsoft Corporation. All rights reserved.
Writing file 'D:\temp\test.xsd'.
D:\temp>xsd test.xsd /classes
Microsoft (R) Xml Schemas/DataTypes support utility
[Microsoft (R) .NET Framework, Version 4.0.30319.1]
Copyright (C) Microsoft Corporation. All rights reserved.
Writing file 'D:\temp\test.cs'.
หมายเหตุ
ตอบวิธีเปลี่ยนไดเรกทอรีในพรอมต์คำสั่งสำหรับนักพัฒนาเป็น d: \ temp อาจมีประโยชน์
ถ้าคุณสร้างชั้นเรียนสำหรับอาร์เรย์หลายมิติมีข้อผิดพลาดใน xsd.exe กำเนิด แต่มีวิธีการแก้ปัญหา
xsd
รันCommand Command Prompt สำหรับ VS2013ใต้เมนูเครื่องมือของคุณ
xsd.exe
สามารถพบได้ใน:C:\Program Files (x86)\Microsoft SDKs\Windows
xsd.exe
พบได้ที่: C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6.1 Tools
หากคุณกำลังทำงานกับโครงการ. NET 4.5 ใน VS 2012 (หรือใหม่กว่า) คุณสามารถวางไฟล์ XML ของคุณเป็นคลาสพิเศษได้
EDIT > Paste Special > Paste XML As Classes
xsd
มาก แต่เอาต์พุตนั้นใกล้เคียงกัน
public (\w+) (\w+)\r\n +\{\r\n +get\r\n +\{\r\n +return this.*;\r\n +\}\r\n +set\r\n +\{\r\n +this.*;\r\n +\}\r\n +\}\r\n
=> public $1 $2 { get; set; }
และ `ส่วนตัว \ w + \ w + ฟิลด์; \ r \ n \ r \ n`
ตอนแรกฉันคิดว่า Paste Special เป็นจอกศักดิ์สิทธิ์! แต่จากนั้นฉันก็ลองแล้วผมก็เปลี่ยนเป็นสีขาวเหมือนหนัง Indiana Jones
แต่ตอนนี้ฉันใช้http://xmltocsharp.azurewebsites.net/และตอนนี้ฉันยังเด็กเหมือนเดิม
นี่คือส่วนของสิ่งที่สร้าง:
namespace Xml2CSharp
{
[XmlRoot(ElementName="entry")]
public class Entry {
[XmlElement(ElementName="hybrisEntryID")]
public string HybrisEntryID { get; set; }
[XmlElement(ElementName="mapicsLineSequenceNumber")]
public string MapicsLineSequenceNumber { get; set; }
ฉันรู้ว่านี่คือโพสต์ที่ค่อนข้างเก่าและคุณอาจย้ายไป
แต่ฉันมีปัญหาเช่นเดียวกับคุณดังนั้นฉันตัดสินใจที่จะเขียนโปรแกรมของฉันเอง
ปัญหาเกี่ยวกับเส้นทาง "xml -> xsd -> classes" สำหรับฉันก็คือมันเพิ่งสร้างก้อนโค้ดที่ไม่สามารถจัดการได้อย่างสมบูรณ์และฉันก็จบการต่อสู้
มันไม่ได้สวยงาม แต่มันก็ทำงานให้ฉันได้
คุณสามารถรับได้ที่นี่: โปรดให้คำแนะนำหากคุณชอบมัน
คุณควรพิจารณา svcutil ( คำถาม svcutil )
ทั้ง xsd.exe และ svcutil ทำงานกับไฟล์ XML schema (.xsd) XML ของคุณจะต้องสอดคล้องกับไฟล์สคีมาที่จะใช้โดยเครื่องมือสองอย่างนี้
โปรดทราบว่ามีเครื่องมือของบุคคลที่สามมากมายสำหรับสิ่งนี้
คุณสามารถใช้ xsd ตามที่ Darin แนะนำ
นอกจากนั้นขอแนะนำให้แก้ไขไฟล์ test.xsd เพื่อสร้างสคีมาที่เหมาะสมยิ่งขึ้น
type="xs:string"
สามารถเปลี่ยนเป็นtype="xs:int"
ค่าจำนวนเต็ม
minOccurs="0"
สามารถเปลี่ยนเป็นminOccurs="1"
ตำแหน่งที่ต้องการฟิลด์
maxOccurs="unbounded"
สามารถเปลี่ยนmaxOccurs="1"
เป็นที่อนุญาตให้มีเพียงหนึ่งรายการเท่านั้น
คุณสามารถสร้าง xsd-s ขั้นสูงขึ้นได้หากคุณต้องการตรวจสอบความถูกต้องของข้อมูลเพิ่มเติม แต่อย่างน้อยที่สุดจะให้ประเภทข้อมูลที่สมเหตุสมผลใน c # ที่สร้างขึ้น
ใช้ไวยากรณ์ด้านล่างเพื่อสร้างคลาสสคีมาจากไฟล์ XSD
C:\xsd C:\Test\test-Schema.xsd /classes /language:cs /out:C:\Test\
ในการแปลง XML เป็น C # Class ให้ทำดังนี้
หมายเหตุ: ในช่วงเวลาที่สมบูรณ์แอพนี้อาจถูกแทนที่ แต่มีโอกาสที่จะมีเครื่องมืออื่นที่ทำสิ่งเดียวกัน