【发布时间】:2012-03-09 11:07:09
【问题描述】:
我需要在 .Net 中将一个对象序列化为以下 XML。
可能最简单的方法是实现 IXMLSerializable,因为我需要对最终结果进行控制......我需要做什么才能在以下模式中输出:
<ns2:ProcessRepairOrder languageCode="de-DE" releaseID="1.0" systemEnvironmentCode="PROD" versionID="1.0">
<ns2:ApplicationArea>
<ns2:Sender>
<ns2:CreatorNameCode xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="ns3:TextType">SomeVendor</ns2:CreatorNameCode>
<ns2:SenderNameCode name="Dave"/>
<ns2:Sender>
</ns2:ApplicationArea>
</ns2:ProcessRepairOrder>
更具体地说,它是没有命名空间的前缀,以及我无法进入 XML 的 xsi:type。
完整版如下所示:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
<S:Body>
<ns1:PutMessage xmlns:ns1="http://www.starstandards.org/webservices/2009/transport" xmlns:ns2="http://www.starstandard.org/STAR/5" xmlns:ns3="http://www.openapplications.org/oagis/9">
<ns1:payload>
<ns1:content>
<ns2:ProcessRepairOrder languageCode="de-DE" releaseID="1.0" systemEnvironmentCode="PROD" versionID="1.0">
...many more XML elements
</ns2:ProcessRepairOrder>
</ns1:PutMessage>
</S:Body>
</S:Envelope>
【问题讨论】:
-
我能想到的一切——这包括实现 IXMLSerializable 和在内部使用 XMLDocument。我不知道如何制作上述内容。我可以粘贴示例,但它们只会使问题变得混乱,因为我有大约 50 行代码不会产生所需的内容......
-
你在实现 IXMLSerializable 的时候发生了什么,有什么不满意的地方?
-
您是否尝试将 *.xsd 文件输入 xsd.exe,生成一个类并将其用于序列化?
-
@AVIDeveloper 我们没有得到 xsd 文件。
-
@TomW 这并不令人满意,因为我无法让它生成相同的 XML。下面的 XML 答案链接看起来是正确的方向。
标签: .net xml xml-serialization xmldocument xmlwriter