美好的一天.
我所知.XML文件中有一个根元素.
但是从XSD文件结构来看,获取根元素值并不容易.有没有办法做到这一点?
(我不想在我的项目中使用硬代码来查找XSD根元素值.我想找到"RootValueHere"的根元素
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:element name="RootValueHere">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="DocumentInfo" minOccurs="1" maxOccurs="1" />
<xsd:element ref="Prerequisite" minOccurs="1" maxOccurs="1" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<!-- Element of DocumentInfo -->
<xsd:element name="DocumentInfo">
<xsd:complexType>
<xsd:attribute name="Name" type="xsd:string" />
<xsd:attribute name="Description" type="xsd:string" />
<xsd:attribute name="Creator" type="xsd:string" />
<xsd:attribute name="CreateTime" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<!-- Element of Prerequisite -->
<xsd:element name="Prerequisite">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Type" type="Prerequisite.Type.type" minOccurs="1" maxOccurs="1" />
<xsd:element name="Miscellaneous" type="Prerequisite.Misc.type" minOccurs="0" maxOccurs="1" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
Run Code Online (Sandbox Code Playgroud)
谢谢.
虽然单个文档只能包含一个根元素,但XSD实际上可以定义多个有效的根元素.
如果您只是真正希望单个类型作为根元素有效,那么它应该是唯一被引用为的类型<element>
.
例如,在上面的模式中,DocumentInfo和Prerequisite节点也是有效的根元素.要将架构限制为只有一个有效的根节点,请使用简单的complexType定义替换DocumentInfo和Prerequisite元素:
<xsd:complexType name="DocumentInfoType">
...
</xsd:complexType>
<xsd:complexType name="Prerequisite">
....
</xsd:complexType>
Run Code Online (Sandbox Code Playgroud)
更新:要访问元素的名称,您只需要查看XmlElement上的Name属性:
XmlDocument doc = new XmlDocument();
doc.Load("D:\\schema.xsd"); // Load the document from the root of an ASP.Net website
XmlElement schemaElement = doc.DocumentElement; // The root element of the schema document is the <schema> element
string elementName = schemaElement.LocalName; // This will print "schema"
foreach (XmlNode ele in schemaElement.ChildNodes)
{
if (ele.LocalName == "element")
{
// This is a valid root node
// Note that there will be *more than one* of these if you have multiple elements declare at the base level
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
7604 次 |
最近记录: |