我使用Go结构来表示两个结构不同的XML文档。 一个XML文档是正在处理的数据的来源,另一个XML文档是源应映射到的目标。
我已经在Go结构中映射了两个XML文档,并且都知道如何编组/解组XML结构。
所以目前我正在键入每个结构中的每个路径,将源中的字段映射到目标中的字段。
是否有更快的方法来初始化新的Target实例,使用某种简写来简化数据映射?请记住,这些都是复杂的嵌套结构,因此我可以遵循一种模式,直到#34;会很棒。
编辑:添加示例XML数据结构
表示这些XML结构的Go结构几乎是XML结构的一对一表示,其中每个嵌套级别都是一种新的结构类型。这些结构是以编程方式生成的,并且非常分散,因此在这里表示数据结构需要花费过多的精力(我的时间很短)。
SOURCE数据文件 - 最多可达到8个嵌套元素。可以有多个元素,每个元素都会生成一个新的单独的" TARGET"实例
<orders>
<order order=no="111222333">
<customer>
<customer-no>555444333</customer-no>
<customer-email>test@test.com</customer-email>
<billing-address>
<first-name>Test</first-name>
<last-name>User</last-name>
</billing-address>
</customer>
<product-lineitems>
<product-lineitem>
<product-id>SomeProductSku</product-id>
<product-name>SomeProductName</product-name>
<base-price>40.00</base-price>
<quantity>1</quantity>
</product-lineitem>
</product-lineitems>
</order>
</orders>
TARGET数据文件 - 最多可达10个嵌套元素
<OrderCreateRequest orderType="SALES" requestId="bcHcsiaagLwM6aaadnXz7ifXZL">
<Order customerOrderId="111222333" levelOfService="REGULAR">
<Customer customerId="555444333">
<Name>
<LastName>User</LastName>
<FirstName>Test</FirstName>
</Name>
<EmailAddress>test@test.com</EmailAddress>
</Customer>
<OrderItems>
<OrderItem id="item_0_1" webLineId="1">
<ItemId>SomeProductSku</ItemId>
<Quantity>1</Quantity>
<Description>
<Description>SomeProductName</Description>
</Description>
<Pricing>
<Merchandise>
<UnitPrice>40.00</UnitPrice>
</Merchandise>
</Pricing>
</OrderItem>
</OrderItems>
</Order>
</OrderCreateRequest>
编辑2:我也试图解决不匹配的类型映射。目前我正在分配每个值类型,这使我真正意识到错误的方式。 XML&lt; - &gt;结构表示已经构建,所以如果只是我需要以某种方式使用map [string] {interface {}}之类的东西来初始化Target结构,请告诉我。自从我上次看Go以来已经有一段时间了,所以我确定我在这里错过了一些更好的解决方案