ปัจจุบันมีซอฟต์แวร์เครื่องมือ XML มากมายที่สามารถเขียนเอกสาร XML ตามไฟล์ XSD ไม่ได้ใช้วิธีนี้ ดังนั้นฉันจึงเขียนวิธีการเรียกดู ตรวจสอบ และสร้าง XML ทั้งหมดดังนี้
ใช้ระบบ;
ใช้ System.Data;
โดยใช้ระบบการกำหนดค่า;
ใช้ System.Web;
โดยใช้ System.Web.Security;
โดยใช้ System.Web.UI;
ใช้ System.Web.UI.WebControls;
ใช้ System.Web.UI.WebControls.WebParts;
ใช้ System.Web.UI.HtmlControls;
ใช้ System.Xml;
ใช้ System.Xml.Schema;
ใช้ System.Collections;
/***////// <สรุป>
/// คำอธิบายโดยย่อของ ProXML
/// </สรุป>
ProXml คลาสสาธารณะ
-
publicProXml()
-
-
// สิ่งที่ต้องทำ: เพิ่มตรรกะคอนสตรัคเตอร์ที่นี่
-
-
/***////// <สรุป>
/// รับเส้นทางไฟล์ xsd
/// </สรุป>
สตริงสาธารณะ GetSchemaPath
-
รับ{
กลับ HttpContext.Current.Request.PhysicalApplicationPath + "App_Data\system\publish.xsd";
-
-
/***////// <สรุป>
/// รับโหนดการประมวลผล
/// </สรุป>
/// <ส่งคืน></ส่งคืน>
System.Collections.Generic.List < XmlSchemaElement > GetDatas() แบบคงที่สาธารณะ
-
XmlSchemaSet xsSet = XmlSchemaSet ใหม่();
xsSet.Add(" http://www.w3.org/2001/XMLSchema ", GetSchemaPath);
xsSet.คอมไพล์();
สคีมา XmlSchema = null;
foreach (XmlSchema xs ใน xsSet.Schemas())
-
สคีมา = xs;
-
System.Collections.Generic.List<XmlSchemaElement> องค์ประกอบ=ใหม่ System.Collections.Generic.List<XmlSchemaElement> ();
foreach (XmlSchemaObject obj ใน schema.Elements.Values)
-
ถ้า (obj.GetType() == ประเภท (XmlSchemaElement))
-
องค์ประกอบเพิ่ม((XmlSchemaElement)obj);
}
}
องค์ประกอบส่งคืน;
-
/***////// <สรุป>
/// เพิ่มองค์ประกอบ
/// </สรุป>
/// <ชื่อพารามิเตอร์ = "sourceXsd" ></ พารามิเตอร์>
/// <param name="titles"></param>
/// <ชื่อพารามิเตอร์ = "sourceXml" ></ พารามิเตอร์>
/// <ชื่อพารามิเตอร์ = "sourceNd" ></ พารามิเตอร์>
/// <ชื่อพารามิเตอร์ = "ค่า" ></ พารามิเตอร์>
โมฆะคงสาธารณะ AddElement (XmlSchemaObject sourceXsd, ชื่อ Hashtable, XmlDocument sourceXml, XmlNode sourceNd, ค่าสตริง [])
{
ถ้า (sourceXsd.GetType() == typeof(XmlSchemaChoice))
-
ตัวเลือก XmlSchemaChoice = sourceXsd เป็น XmlSchemaChoice;
ทศนิยมขั้นต่ำ = ทางเลือก MinOccurs;
foreach (รายการ XmlSchemaObject ใน choice.Items)
-
ถ้า (item.GetType() == typeof(XmlSchemaElement))
-
ชื่อสตริง = ((XmlSchemaElement) รายการ) ชื่อ;
ถ้า (titles.ContainsKey (ชื่อ))
-
องค์ประกอบ XmlElement = sourceXml.CreateElement (ชื่อ);
// element.InnerText = ((Excel.Range)st.Cells[rowIndex, (int)titles[ชื่อ]]).Value2.ToString();
element.InnerText = ค่า [(int) ชื่อ [ชื่อ]];
sourceNd.AppendChild (องค์ประกอบ);
}
}
อื่น
-
AddElement (รายการ, ชื่อ, sourceXml, sourceNd, ค่า);
}
}
-
อย่างอื่นถ้า (sourceXsd.GetType() == typeof(XmlSchemaElement))
-
ชื่อสตริง = ((XmlSchemaElement)sourceXsd).ชื่อ;
ถ้า (titles.ContainsKey (ชื่อ))
-
องค์ประกอบ XmlElement = sourceXml.CreateElement (ชื่อ);
element.InnerText = ค่า [(int) ชื่อ [ชื่อ]];
sourceNd.AppendChild (องค์ประกอบ);
}
}
อย่างอื่นถ้า (sourceXsd.GetType() == typeof(XmlSchemaSequence))
-
foreach (XmlSchemaObject childItem ใน ((XmlSchemaSequence)sourceXsd) รายการ)
-
ถ้า (childItem.GetType() == typeof (XmlSchemaElement))
-
ชื่อสตริง = ((XmlSchemaElement)childItem).ชื่อ;
ถ้า (titles.ContainsKey (ชื่อ))
-
องค์ประกอบ XmlElement = sourceXml.CreateElement (ชื่อ);
element.InnerText = ค่า [(int) ชื่อ [ชื่อ]];
sourceNd.AppendChild (องค์ประกอบ);
-
-
อื่น
-
AddElement(childItem, ชื่อ, sourceXml, sourceNd, ค่า);
}
}
-
อื่น
-
กลับ;
-
-
/***////// <สรุป>
/// รับองค์ประกอบ
/// </สรุป>
/// <ชื่อพารามิเตอร์ = "ชื่อ" ></ พารามิเตอร์>
/// <ส่งคืน></ส่งคืน>
System.Collections.Generic.List < XmlSchemaElement > GetDataItem (ชื่อสตริง) แบบคงที่สาธารณะ
-
System.Collections.Generic.List<XmlSchemaElement> arr = ใหม่ System.Collections.Generic.List<XmlSchemaElement>();
องค์ประกอบ XmlSchemaElement = GetTableSchema (ชื่อ);
ถ้า (องค์ประกอบ == null)
-
กลับเป็นโมฆะ;
-
XmlSchemaComplexType complex = element.SchemaType เป็น XmlSchemaComplexType;
ลำดับ XmlSchemaSequence = complex.ContentTypeParticle เป็น XmlSchemaSequence;
foreach (วัตถุ XmlSchemaObject ตามลำดับรายการ)
-
ถ้า (obj.GetType() == ประเภท (XmlSchemaElement))
-
รายการ XmlSchemaElement = (XmlSchemaElement)obj;
arr.Add(รายการ);
-
อื่น
-
GetItem(arr, obj);
-
-
กลับถึง;
-
โมฆะคงสาธารณะ GetItem (System.Collections.Generic.List < XmlSchemaElement > arr, XmlSchemaObject obj)
-
ถ้า (obj.GetType() == ประเภท (XmlSchemaElement))
-
รายการ XmlSchemaElement = (XmlSchemaElement)obj;
arr.Add(รายการ);
-
อย่างอื่นถ้า (obj.GetType() == typeof(XmlSchemaChoice))
-
ตัวเลือก XmlSchemaChoice = obj เป็น XmlSchemaChoice;
foreach (ลูก XmlSchemaObject ในตัวเลือกรายการ)
-
ถ้า (child.GetType() == typeof (XmlSchemaElement))
-
รายการ XmlSchemaElement = ลูกเป็น XmlSchemaElement;
arr.Add(รายการ);
-
อื่น
-
GetItem(arr ลูก);
-
-
-
อย่างอื่นถ้า (obj.GetType() == typeof(XmlSchemaSequence))
-
ลำดับ XmlSchemaSequence = obj เป็น XmlSchemaSequence;
foreach (ลูก XmlSchemaObject ตามลำดับรายการ)
-
ถ้า (child.GetType() == typeof(XmlSchemaObject))
-
รายการ XmlSchemaElement = ลูกเป็น XmlSchemaElement;
arr.Add(รายการ);
-
อื่น
-
GetItem(arr ลูก);
-
-
-
อื่น
-
กลับ;
-
-
/***////// <สรุป>
/// รับโหนดตามชื่อโหนด
/// </สรุป>
/// <ชื่อพารามิเตอร์ = "ชื่อ" ></ พารามิเตอร์>
/// <ส่งคืน></ส่งคืน>
XmlSchemaElement GetTableSchema แบบคงที่สาธารณะ (ชื่อสตริง)
-
XmlSchemaSet xsSet = XmlSchemaSet ใหม่();
xsSet.Add(" http://www.w3.org/2001/XMLSchema ", GetSchemaPath);
xsSet.คอมไพล์();
สคีมา XmlSchema=null;
foreach (XmlSchema xs ใน xsSet.Schemas())
-
สคีมา = xs;
-
XmlQualifiedName qf = XmlQualifiedName ใหม่ (ชื่อ, " http://www.w3.org/2001/XMLSchema ");
ถ้า (schema.Elements.Contains (qf))
-
กลับ (XmlSchemaElement) schema.Elements [qf];
-
กลับเป็นโมฆะ;
}
โมฆะคงที่ XmlValidation (ผู้ส่งวัตถุ, ValidationEventArgs e)
-
สวิตช์ (e.ความรุนแรง)
-
กรณี XmlSeverityType ข้อผิดพลาด:
โยน e.Exception;
case XmlSeverityType.Warning:
โยน e.Exception;
}
}
/***////// <สรุป>
/// ตรวจสอบวัตถุ dom
/// </สรุป>
/// <ชื่อพารามิเตอร์="doc"></param>
/// <ส่งคืน></ส่งคืน>
สตริงสาธารณะ CheckDataXml (XmlDocument doc)
-
XmlSchemaSet xsd = XmlSchemaSet ใหม่();
xsd.Add("", GetSchemaPath);
doc.Schemas = xsd;
พยายาม
-
doc.Validate(ValidationEventHandler ใหม่ (XmlValidation));
-
catch (ข้อยกเว้น เช่น)
-
กลับเช่นข้อความ;
-
กลับเป็นโมฆะ;
-
-
http://www.cnblogs.com/eric812/archive/2006/11/01/546914.html