我在eclipse中使用内置功能从XSD生成XML文件。 必须如下所示生成XML,并在不同的命名空间下使用“addressbook”。
<employee xmlns:ns2="urn:employees_2014_1.lists.webservices.test.com">
<department>8029</department>
<emailAddress>USER_17@something.com</emailAddress>
<employeeAddressBookList>
<ns2:addressbook>
<ns2:addressee>BC</ns2:addressee>
<ns2:addr1>A1</ns2:addr1>
<ns2:addr2>A2</ns2:addr2>
<ns2:city>C1</ns2:city>
<ns2:state>ST1</ns2:state>
<ns2:zip>10001</ns2:zip>
</ns2:addressbook>
</employeeAddressBookList>
<employeeId>000001</employeeId>
</employee>
我的XSD如下所示。
<xsd:schema attributeFormDefault="unqualified" elementFormDefault="qualified" version="1.0" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:element name="employee">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="department" type="xsd:int" />
<xsd:element name="emailAddress" type="xsd:string" />
<xsd:element name="employeeAddressBookList">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="ns2:addressbook">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="ns2:addressee" type="xsd:string" />
<xsd:element name="ns2:addr1" type="xsd:string" />
<xsd:element name="ns2:addr2" type="xsd:string" />
<xsd:element name="ns2:city" type="xsd:string" />
<xsd:element name="ns2:state" type="xsd:string" />
<xsd:element name="ns2:zip" type="xsd:int" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="employeeId" type="xsd:int" />
</xsd:sequence>
<xsd:attribute name="xmlns:ns2" type="xs:string" />
</xsd:complexType>
</xsd:element>
</xsd:schema>
这生成了一个没有命名空间值的XML。
<employee xmlns:ns2="">
<department>8029</department>
<emailAddress>USER_17@something.com</emailAddress>
<employeeAddressBookList>
<ns2:addressbook>
<ns2:addressee>BC</ns2:addressee>
<ns2:addr1>A1</ns2:addr1>
<ns2:addr2>A2</ns2:addr2>
<ns2:city>C1</ns2:city>
<ns2:state>ST1</ns2:state>
<ns2:zip>10001</ns2:zip>
</ns2:addressbook>
</employeeAddressBookList>
<employeeId>000001</employeeId>
</employee>
我在谈论这条线......
<employee xmlns:ns2="">
如何为命名空间添加值?
答案 0 :(得分:1)
XSD存在很多问题,令人惊讶的是你从中获取了任何XML:
addressbook
属性值必须是NCNAME(没有命名空间)
前缀)。employee
和后代)和
声明了非命名空间(department
,xsd:import
等)组件
在单个XSD中 - 您需要使用nsMgr.AddNamespace(String.Empty, root.NamespaceURI)
。不对(至少)对XSD进行上述修复,您不能指望从中生成正确的XML。