我创建了 xsd:
<?xml version="1.0" encoding="utf-8"?>
<xs:schema targetNamespace="test" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="Extension">
<xs:complexType>
<xs:sequence>
<xs:element name="parent">
<xs:annotation>
<xs:documentation></xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="1" maxOccurs="unbounded" name="parentItem">
<xs:complexType>
<xs:sequence>
<xs:element name="child">
<xs:annotation>
<xs:documentation></xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="1" maxOccurs="unbounded" default="10" name="childItem" type="xs:integer" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
我想将此模式加载到 DataSet 中,然后编辑和创建 xml
所以我尝试用值 100 填充 childItem 元素:
DataSet a = new DataSet();
a.ReadXmlSchema(mySchema);
a.Tables[3].Rows.Add(100);
然后我执行:
a.getXml()
- 结果:
<Extension xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="test">
<childItem xmlns="">100</childItem>
</Extension>
如您所见,它完全忽略了架构关系-在架构中,您可以看到 childItem 上方的每个父元素都是必需的,因此如果我将值添加到最深的子项中,我希望 xml 像:
<Extension>
<Parent>
<ParentItem>
<Child>
<ChildItem>100<ChildItem/>
<Child/>
<ParentItem/>
<Parent/>
<Extension/>
我是否遗漏了什么,或者这是 DataSet 的标准行为?非常感谢我正在使用 c# 和 net4.0,winforms