这是我从亚马逊mws ListInventorySupplyRequest 得到的回复
<ListInventorySupplyResponse xmlns="http://mws.amazonaws.com/FulfillmentInventory/2010-10-01/">
<ListInventorySupplyResult>
<InventorySupplyList>
<member>
<SellerSKU>SKIjkhsad </SellerSKU>
<FNSKU>lksdkl</FNSKU>
<ASIN>;kzjsdkj</ASIN>
<Condition>NewItem</Condition>
<TotalSupplyQuantity>0</TotalSupplyQuantity>
<InStockSupplyQuantity>0</InStockSupplyQuantity>
<SupplyDetail />
</member>
<member>
<SellerSKU>another sku</SellerSKU>
<FNSKU>dklhfa</FNSKU>
<ASIN>ajshdf;a</ASIN>
<Condition>NewItem</Condition>
<TotalSupplyQuantity>8</TotalSupplyQuantity>
<InStockSupplyQuantity>8</InStockSupplyQuantity>
<EarliestAvailability>
<TimepointType>Immediately</TimepointType>
</EarliestAvailability>
<SupplyDetail>
<member>
<Quantity>8</Quantity>
<SupplyType>InStock</SupplyType>
<EarliestAvailableToPick>
<TimepointType>Immediately</TimepointType>
</EarliestAvailableToPick>
<LatestAvailableToPick>
<TimepointType>Immediately</TimepointType>
</LatestAvailableToPick>
</member>
</SupplyDetail>
</member>
</InventorySupplyList>
<NextToken>nextTken</NextToken>
</ListInventorySupplyResult>
<ResponseMetadata>
<RequestId>RequestID</RequestId>
</ResponseMetadata>
</ListInventorySupplyResponse>
有没有人有有效的方法将其解析为带有数据表的数据集?
还是有关于此的官方 mws 文档?
通常,您可以使用以下内容来执行要执行的操作:
using System.Data;
DataSet data = new DataSet();
data.ReadXml(@"Example.xml");
您发布的 XML 的问题在于它具有名称相同的嵌套元素。因此,您将在数据过程中收到错误。ReadXml().您应该能够通过使用以下代码的 XML 转换来解决此问题:
using System.Data;
using System.Xml.Xsl;
XslTransform transform = new XslTransform();
transform.Load(@"Transform.xsl");
transform.Transform(@"Example.xml", @"TransformedExample.xml");
DataSet data = new DataSet();
data.ReadXml(@"TransformedExample.xml");
不幸的是,我已经有好几年没有编写XML转换了,我现在也没有时间研究语法。如果今晚晚些时候我有更多时间时没有回答这个问题,我可以研究 XML 转换并为您发布一个示例转换。
编辑添加:出于测试目的,如果您删除您发布的示例的元素内的元素,则为数据。ReadXml() 可以将示例 XML 读入数据集。
编辑添加:我终于有时间为您创建一个示例 XML 转换。正如我上面提到的,我已经有好几年没有编写任何 XSL 了。这应该适用于您的示例,但可能需要对其进行修改才能使用实际的 XML 文档。此转换的作用是将 InventorySupplyList/成员子元素和 SupplyDetail/成员子元素分别重命名为 InventorySupplyListMember 和 SupplyDetailMember。
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:aws="http://mws.amazonaws.com/FulfillmentInventory/2010-10-01/"
xsl:exclude-result-prefixes="aws">
<xsl:output indent="yes"/>
<!--Identity Transform.-->
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
<xsl:template match="aws:InventorySupplyList/aws:member">
<xsl:element name="InventorySupplyListMember" namespace="{namespace-uri()}">
<xsl:apply-templates select="node()|@*"/>
</xsl:element>
</xsl:template>
<xsl:template match="aws:SupplyDetail/aws:member">
<xsl:element name="SupplyDetailMember" namespace="{namespace-uri()}">
<xsl:apply-templates select="node()|@*"/>
</xsl:element>
</xsl:template>
</xsl:stylesheet>