如何迭代/遍历XML文件元素(包含不同的名称空间),将其转换为C#中的Data表



我有一个示例来读取包含不同名称空间的xml文件的xml模式集。为此,我可以为每个命名空间获得不同的模式,如下所述。

示例文件:

<?xml version="1.0" encoding="utf-8"?>
<data xmlns:d="http://sampleschema/dataservices" xmlns:m="http://sampleschema/dataservices/metadata">
	<content>
		<m:properties>
			<d:CustomerID>ALFKI</d:CustomerID>
			<d:CompanyName>Alfreds Futterkiste</d:CompanyName>
		</m:properties>
	</content>
</data>

获取XML架构集的示例代码:

strFileName = @"C:SampleSample.xml";
XmlReader reader = XmlReader.Create(strFileName);
XmlSchemaInference schema = new XmlSchemaInference();
XmlSchemaSet schemaSet = schema.InferSchema(reader);

在使用上面的代码时,它给出了三种不同类型的模式。但我的要求是,我需要为整个xml文件提供一个单一的架构,其中包含任意数量的命名空间。我已经检查了msdn中代码和堆栈溢出的可能性。我找不到合适的解决办法。

预期的架构输出如下所示。

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
<xs:element name="data">
<xs:complexType>
<xs:sequence>
<xs:element name="content">
<xs:complexType>
<xs:sequence>
<xs:element name="m:properties">
<xs:complexType>
<xs:sequence>
<xs:element name="d:CustomerID" type="xs:string"></xs:element>
<xs:element name="d:CompanyName" type="xs:string"></xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="xmlns:d" type="xs:string"></xs:attribute>
<xs:attribute name="xmlns:m" type="xs:string"></xs:attribute>
</xs:complexType>
</xs:element>
</xs:schema>

任何人都可以帮助实现这一要求。

提前谢谢。

试试这样的东西:

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:m="http://www.w3.org/2001/XMLSchema" xmlns:d="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
<xs:element name="data">
<xs:complexType>
<xs:sequence>
<xs:element name="content">
<m:complexType>
<m:sequence>
<m:element name="properties">
<d:complexType>
<d:sequence>
<d:element name="CustomerID" type="xs:string"></d:element>
<d:element name="CompanyName" type="xs:string"></d:element>
</d:sequence>
</d:complexType>
</m:element>
</m:sequence>
</m:complexType>
</xs:element>
</xs:sequence>
<d:attribute name="xmlns_d" type="d:string"></d:attribute>
<m:attribute name="xmlns_m" type="d:string"></m:attribute>
</xs:complexType>
</xs:element>
</xs:schema>

相关内容

  • 没有找到相关文章

最新更新