这是我从亚马逊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文档吗?
发布于 2015-03-11 01:22:25
通常,您可以使用以下命令来执行您想要执行的操作:
using System.Data;
DataSet data = new DataSet();
data.ReadXml(@"Example.xml");您发布的XML的问题是,它具有名称相同的嵌套元素。因此,在data.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转换,并为您发布一个示例转换。
编辑后添加:出于测试目的,如果删除所发布示例的元素内的元素,data.ReadXml()可以将示例XML读取到DataSet中。
编辑后添加:我终于有时间为您创建一个示例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>https://stackoverflow.com/questions/28968193
复制相似问题