使用表列名称为文件导入映射XML属性/元素

时间:2017-07-03 10:16:14

标签: xml import mapping

我有以下xml文件

<?xml version="1.0" encoding="ISO-8859-1"?>
<ProdExtract>
 <ExtractHeader>
  <Schema>
   <id>Accord ePOS Product Extract</id>
   <Version>1.00</Version>
  </Schema>  
 </ExtractHeader>
 <Product>
  <Mode>Modify</Mode>
  <ProductID>  
    <LongDescription>COLMANS MINT SAUCE      #</LongDescription>  
  </ProductID>
  <BasicFields>  
    <Units>6</Units>
    <VAT VatCode="A" VatRate="0" />  
  </BasicFields>
  <Price>  
    <CurrentWSP>9.55</CurrentWSP>
    <CurrentRSP>2.01</CurrentRSP>  
  </Price>
  <Barcode>  
    <Eancode>5000147032921</Eancode>  
  </Barcode>
 </Product>
</ProdExtract>

这是我对表格列的映射

foreach (XmlNode node in xDoc.SelectNodes("ProdExtract/Product"))                    
{                     
    insert = insert ?? new PostgreSQLCopyHelper<ProductViewModel>("public", "q_product")
        .MapUUID("q_guid", x => Guid.NewGuid())
        .MapText("q_description", x => node.SelectSingleNode("ProductID/LongDescription").InnerText)
        .MapText("q_barcode", x => node.SelectSingleNode("Barcode/Eancode").InnerText)
        .MapNumeric("q_casesize", x => Convert.ToDecimal(node.SelectSingleNode("BasicFields/Units").InnerText))
        .MapNumeric("q_sellprice", x => Convert.ToDecimal(node.SelectSingleNode("Price/CurrentRSP").InnerText))
        .MapNumeric("q_casecost", x => Convert.ToDecimal(node.SelectSingleNode("Price/CurrentWSP").InnerText))
                        ;

    entities.Add(p);                        
}

我可以从XML文件中获取所需的所有值,并使用上述方法将它们与我的表列匹配。但现在我该如何处理这一部分

<BasicFields>  
  <Units>6</Units>
  <VAT VatCode="A" VatRate="0" />  
</BasicFields>

如果我想要VatRate的值,即0.此行

node.SelectSingleNode("BasicFields/Vat/VatRate").OuterXml;

debugging

让我无处可去,我在互联网上没有运气。

1 个答案:

答案 0 :(得分:0)

最终弄清楚了(顺便说一下,这是c#代码,我还没检查其他语言是否有任何不同)

<BasicFields>  
 <Units>6</Units>
 <VAT VatCode="A" VatRate="0" />  
</BasicFields>

获得价值“A”

node.SelectSingleNode("BasicFields/VAT").Attributes["VatCode"].Value;

获取值“0”

node.SelectSingleNode("BasicFields/VAT").Attributes["VatRate"].Value;