2013-01-04 104 views
7

我在尋找一些幫助,試圖轉換從亞馬遜產品API檢索到的XML以將其轉換爲CSV(逗號分隔值)格式。使用Javascript將XML轉換爲CSV

我在這裏找到了一個類似的主題:XML to CSV conversion issue但它使用PHP,我想用JavaScript代替。

這裏是什麼,我有一個樣本:

<?xml version="1.0" encoding="UTF-8"?> 
<ItemLookupResponse xmlns="http://webservices.amazon.com/AWSECommerceService/2011-08-01"> 
    <OperationRequest> 
    <RequestId>1k75f474-85ff-464a-al93-659ol460caee</RequestId> 
    <Arguments> 
     <Argument Name="Operation" Value="ItemLookup" /> 
     <Argument Name="Service" Value="AWSECommerceService" /> 
     <Argument Name="Signature" Value="lImNXr6R4c2t376ghMnMmjUPR4eY6755XzH41pXGH0P=" /> 
     <Argument Name="AssociateTag" Value="oiuig-20" /> 
     <Argument Name="ItemId" Value="B007EHI1DK" /> 
     <Argument Name="AWSAccessKeyId" Value="DIY7F4M00OF6I7TRD3VA" /> 
     <Argument Name="Timestamp" Value="2013-01-04T05:23:20Z" /> 
     <Argument Name="ResponseGroup" Value="Large" /> 
    </Arguments> 
    <RequestProcessingTime>0.0359500000000000</RequestProcessingTime> 
    </OperationRequest> 
    <Items> 
    <Request> 
     <IsValid>True</IsValid> 
     <ItemLookupRequest> 
     <IdType>ASIN</IdType> 
     <ItemId>B007EHI1DK</ItemId> 
     <ResponseGroup>Large</ResponseGroup> 
     <VariationPage>All</VariationPage> 
     </ItemLookupRequest> 
    </Request> 
    <Item> 
     <ASIN>B007EHI1DK</ASIN> 
     <DetailPageURL>http://www.amazon.com/Panasonic-TY-ER3D4MU-Active-Shutter-Eyewear/dp/B007EHI1DK%3FSubscriptionId%3DIY7F4M00OF6I7TRD3VAS%26tag%3Daztag-20%26linkCode%3Dxm2%26camp%3D2025%26creative%3D165953%26creativeASIN%3DB007EHI1DK</DetailPageURL> 
     <ItemLinks> 
     <ItemLink> 
      <Description>Technical Details</Description> 
      <URL>http://www.amazon.com/Panasonic-TY-ER3D4MU-Active-Shutter-Eyewear/dp/tech-data/B007EHI1DK%3FSubscriptionId%3DIY7F4M00OF6I7TRD3VAS%26tag%3Daztag-20%26linkCode%3Dxm2%26camp%3D2025%26creative%3D386001%26creativeASIN%3DB007EHI1DK</URL> 
     </ItemLink> 
     <ItemLink> 
      <Description>Add To Baby Registry</Description> 
      <URL>http://www.amazon.com/gp/registry/baby/add-item.html%3Fasin.0%3DB007EHI1DK%26SubscriptionId%3DIY7F4M00OF6I7TRD3VAS%26tag%3Daztag-20%26linkCode%3Dxm2%26camp%3D2025%26creative%3D386001%26creativeASIN%3DB007EHI1DK</URL> 
     </ItemLink> 
     <ItemLink> 
      <Description>Add To Wedding Registry</Description> 
      <URL>http://www.amazon.com/gp/registry/wedding/add-item.html%3Fasin.0%3DB007EHI1DK%26SubscriptionId%3DIY7F4M00OF6I7TRD3VAS%26tag%3Daztag-20%26linkCode%3Dxm2%26camp%3D2025%26creative%3D386001%26creativeASIN%3DB007EHI1DK</URL> 
     </ItemLink> 
     <ItemLink> 
      <Description>Add To Wishlist</Description> 
      <URL>http://www.amazon.com/gp/registry/wishlist/add-item.html%3Fasin.0%3DB007EHI1DK%26SubscriptionId%3DIY7F4M00OF6I7TRD3VAS%26tag%3Daztag-20%26linkCode%3Dxm2%26camp%3D2025%26creative%3D386001%26creativeASIN%3DB007EHI1DK</URL> 
     </ItemLink> 
     <ItemLink> 
      <Description>Tell A Friend</Description> 
      <URL>http://www.amazon.com/gp/pdp/taf/B007EHI1DK%3FSubscriptionId%3DIY7F4M00OF6I7TRD3VAS%26tag%3Daztag-20%26linkCode%3Dxm2%26camp%3D2025%26creative%3D386001%26creativeASIN%3DB007EHI1DK</URL> 
     </ItemLink> 
     <ItemLink> 
      <Description>All Customer Reviews</Description> 
      <URL>http://www.amazon.com/review/product/B007EHI1DK%3FSubscriptionId%3DIY7F4M00OF6I7TRD3VAS%26tag%3Daztag-20%26linkCode%3Dxm2%26camp%3D2025%26creative%3D386001%26creativeASIN%3DB007EHI1DK</URL> 
     </ItemLink> 
     <ItemLink> 
      <Description>All Offers</Description> 
      <URL>http://www.amazon.com/gp/offer-listing/B007EHI1DK%3FSubscriptionId%3DIY7F4M00OF6I7TRD3VAS%26tag%3Daztag-20%26linkCode%3Dxm2%26camp%3D2025%26creative%3D386001%26creativeASIN%3DB007EHI1DK</URL> 
     </ItemLink> 
     </ItemLinks> 
     <SmallImage> 
     <URL>http://ecx.images-amazon.com/images/I/31pKDguukTL._SL75_.jpg</URL> 
     <Height Units="pixels">50</Height> 
     <Width Units="pixels">75</Width> 
     </SmallImage> 
     <MediumImage> 
     <URL>http://ecx.images-amazon.com/images/I/31pKDguukTL._SL160_.jpg</URL> 
     <Height Units="pixels">107</Height> 
     <Width Units="pixels">160</Width> 
     </MediumImage> 
     <LargeImage> 
     <URL>http://ecx.images-amazon.com/images/I/31pKDguukTL.jpg</URL> 
     <Height Units="pixels">333</Height> 
     <Width Units="pixels">500</Width> 
     </LargeImage> 
     <ImageSets> 
     <ImageSet Category="primary"> 
      <SwatchImage> 
      <URL>http://ecx.images-amazon.com/images/I/31pKDguukTL._SL30_.jpg</URL> 
      <Height Units="pixels">20</Height> 
      <Width Units="pixels">30</Width> 
      </SwatchImage> 
      <SmallImage> 
      <URL>http://ecx.images-amazon.com/images/I/31pKDguukTL._SL75_.jpg</URL> 
      <Height Units="pixels">50</Height> 
      <Width Units="pixels">75</Width> 
      </SmallImage> 
      <ThumbnailImage> 
      <URL>http://ecx.images-amazon.com/images/I/31pKDguukTL._SL75_.jpg</URL> 
      <Height Units="pixels">50</Height> 
      <Width Units="pixels">75</Width> 
      </ThumbnailImage> 
      <TinyImage> 
      <URL>http://ecx.images-amazon.com/images/I/31pKDguukTL._SL110_.jpg</URL> 
      <Height Units="pixels">73</Height> 
      <Width Units="pixels">110</Width> 
      </TinyImage> 
      <MediumImage> 
      <URL>http://ecx.images-amazon.com/images/I/31pKDguukTL._SL160_.jpg</URL> 
      <Height Units="pixels">107</Height> 
      <Width Units="pixels">160</Width> 
      </MediumImage> 
      <LargeImage> 
      <URL>http://ecx.images-amazon.com/images/I/31pKDguukTL.jpg</URL> 
      <Height Units="pixels">333</Height> 
      <Width Units="pixels">500</Width> 
      </LargeImage> 
     </ImageSet> 
     <ImageSet Category="variant"> 
      <SwatchImage> 
      <URL>http://ecx.images-amazon.com/images/I/31dSwH5PnjL._SL30_.jpg</URL> 
      <Height Units="pixels">20</Height> 
      <Width Units="pixels">30</Width> 
      </SwatchImage> 
      <SmallImage> 
      <URL>http://ecx.images-amazon.com/images/I/31dSwH5PnjL._SL75_.jpg</URL> 
      <Height Units="pixels">50</Height> 
      <Width Units="pixels">75</Width> 
      </SmallImage> 
      <ThumbnailImage> 
      <URL>http://ecx.images-amazon.com/images/I/31dSwH5PnjL._SL75_.jpg</URL> 
      <Height Units="pixels">50</Height> 
      <Width Units="pixels">75</Width> 
      </ThumbnailImage> 
      <TinyImage> 
      <URL>http://ecx.images-amazon.com/images/I/31dSwH5PnjL._SL110_.jpg</URL> 
      <Height Units="pixels">73</Height> 
      <Width Units="pixels">110</Width> 
      </TinyImage> 
      <MediumImage> 
      <URL>http://ecx.images-amazon.com/images/I/31dSwH5PnjL._SL160_.jpg</URL> 
      <Height Units="pixels">107</Height> 
      <Width Units="pixels">160</Width> 
      </MediumImage> 
      <LargeImage> 
      <URL>http://ecx.images-amazon.com/images/I/31dSwH5PnjL.jpg</URL> 
      <Height Units="pixels">333</Height> 
      <Width Units="pixels">500</Width> 
      </LargeImage> 
     </ImageSet> 
     <ImageSet Category="variant"> 
      <SwatchImage> 
      <URL>http://ecx.images-amazon.com/images/I/31irEbzxdgL._SL30_.jpg</URL> 
      <Height Units="pixels">20</Height> 
      <Width Units="pixels">30</Width> 
      </SwatchImage> 
      <SmallImage> 
      <URL>http://ecx.images-amazon.com/images/I/31irEbzxdgL._SL75_.jpg</URL> 
      <Height Units="pixels">50</Height> 
      <Width Units="pixels">75</Width> 
      </SmallImage> 
      <ThumbnailImage> 
      <URL>http://ecx.images-amazon.com/images/I/31irEbzxdgL._SL75_.jpg</URL> 
      <Height Units="pixels">50</Height> 
      <Width Units="pixels">75</Width> 
      </ThumbnailImage> 
      <TinyImage> 
      <URL>http://ecx.images-amazon.com/images/I/31irEbzxdgL._SL110_.jpg</URL> 
      <Height Units="pixels">73</Height> 
      <Width Units="pixels">110</Width> 
      </TinyImage> 
      <MediumImage> 
      <URL>http://ecx.images-amazon.com/images/I/31irEbzxdgL._SL160_.jpg</URL> 
      <Height Units="pixels">107</Height> 
      <Width Units="pixels">160</Width> 
      </MediumImage> 
      <LargeImage> 
      <URL>http://ecx.images-amazon.com/images/I/31irEbzxdgL.jpg</URL> 
      <Height Units="pixels">333</Height> 
      <Width Units="pixels">500</Width> 
      </LargeImage> 
     </ImageSet> 
     </ImageSets> 
     <ItemAttributes> 
     <Binding>Electronics</Binding> 
     <Brand>Panasonic</Brand> 
     <CatalogNumberList> 
      <CatalogNumberListElement>TYER3D4M</CatalogNumberListElement> 
      <CatalogNumberListElement>TYER3D4MU</CatalogNumberListElement> 
      <CatalogNumberListElement>TY-ER3D4MU</CatalogNumberListElement> 
     </CatalogNumberList> 
     <Color>One Color</Color> 
     <Department>Electronics</Department> 
     <EAN>0885170075207</EAN> 
     <EANList> 
      <EANListElement>0885170075207</EANListElement> 
     </EANList> 
     <Feature>Lightweight Active Shutter 3D Eyewear</Feature> 
     <Feature>USB Rechargeable</Feature> 
     <Feature>RF Compatible</Feature> 
     <IsAutographed>0</IsAutographed> 
     <IsMemorabilia>0</IsMemorabilia> 
     <ItemDimensions> 
      <Height Units="hundredths-inches">170</Height> 
      <Length Units="hundredths-inches">340</Length> 
      <Weight Units="hundredths-pounds">10</Weight> 
      <Width Units="hundredths-inches">670</Width> 
     </ItemDimensions> 
     <Label>Panasonic</Label> 
     <ListPrice> 
      <Amount>7995</Amount> 
      <CurrencyCode>USD</CurrencyCode> 
      <FormattedPrice>$79.95</FormattedPrice> 
     </ListPrice> 
     <Manufacturer>Panasonic</Manufacturer> 
     <Model>TY-ER3D4MU</Model> 
     <MPN>TY-ER3D4MU</MPN> 
     <NumberOfItems>1</NumberOfItems> 
     <PackageDimensions> 
      <Height Units="hundredths-inches">240</Height> 
      <Length Units="hundredths-inches">690</Length> 
      <Weight Units="hundredths-pounds">30</Weight> 
      <Width Units="hundredths-inches">350</Width> 
     </PackageDimensions> 
     <PackageQuantity>1</PackageQuantity> 
     <PartNumber>TY-ER3D4MU</PartNumber> 
     <ProductGroup>CE</ProductGroup> 
     <ProductTypeName>CONSUMER_ELECTRONICS</ProductTypeName> 
     <Publisher>Panasonic</Publisher> 
     <Size>One Size</Size> 
     <SKU>292782</SKU> 
     <Studio>Panasonic</Studio> 
     <Title>Panasonic VIERA TY-ER3D4MU Active Shutter 3D Eyewear</Title> 
     <UPC>885170075207</UPC> 
     <UPCList> 
      <UPCListElement>885170075207</UPCListElement> 
     </UPCList> 
     </ItemAttributes> 
     <OfferSummary> 
     <LowestNewPrice> 
      <Amount>5400</Amount> 
      <CurrencyCode>USD</CurrencyCode> 
      <FormattedPrice>$54.00</FormattedPrice> 
     </LowestNewPrice> 
     <LowestUsedPrice> 
      <Amount>4294</Amount> 
      <CurrencyCode>USD</CurrencyCode> 
      <FormattedPrice>$42.94</FormattedPrice> 
     </LowestUsedPrice> 
     <TotalNew>24</TotalNew> 
     <TotalUsed>18</TotalUsed> 
     <TotalCollectible>0</TotalCollectible> 
     <TotalRefurbished>0</TotalRefurbished> 
     </OfferSummary> 
     <Offers> 
     <TotalOffers>1</TotalOffers> 
     <TotalOfferPages>1</TotalOfferPages> 
     <MoreOffersUrl>http://www.amazon.com/gp/offer-listing/B007EHI1DK%3FSubscriptionId%3DIY7F4M00OF6I7TRD3VAS%26tag%3Daztag-20%26linkCode%3Dxm2%26camp%3D2025%26creative%3D386001%26creativeASIN%3DB007EHI1DK</MoreOffersUrl> 
     <Offer> 
      <OfferAttributes> 
      <Condition>New</Condition> 
      </OfferAttributes> 
      <OfferListing> 
      <OfferListingId>rkyW%2Bed7Qb8t28tJRRHkKizuk2CxNF4SI6W9XAnbXI8JX%2FJNpUY%2B8zqnnNRe3Vt2l%2B8rUMqypquQnAE66PYmf32dJeor6DifXvXKscwOqyrLwgFZORqmDg%3D%3D</OfferListingId> 
      <Price> 
       <Amount>5851</Amount> 
       <CurrencyCode>USD</CurrencyCode> 
       <FormattedPrice>$58.51</FormattedPrice> 
      </Price> 
      <AmountSaved> 
       <Amount>2144</Amount> 
       <CurrencyCode>USD</CurrencyCode> 
       <FormattedPrice>$21.44</FormattedPrice> 
      </AmountSaved> 
      <PercentageSaved>27</PercentageSaved> 
      <Availability>Usually ships in 24 hours</Availability> 
      <AvailabilityAttributes> 
       <AvailabilityType>now</AvailabilityType> 
       <MinimumHours>0</MinimumHours> 
       <MaximumHours>0</MaximumHours> 
      </AvailabilityAttributes> 
      <IsEligibleForSuperSaverShipping>1</IsEligibleForSuperSaverShipping> 
      </OfferListing> 
     </Offer> 
     </Offers> 
     <CustomerReviews> 
     <IFrameURL>http://www.amazon.com/reviews/iframe?akid=AKIAIBT3ANF6TOEOKXVA&amp;alinkCode=xm2&amp;asin=B007EHI1DK&amp;atag=aztag-20&amp;exp=2013-01-05T05%3A23%3A21Z&amp;v=2&amp;sig=yz1U1nT8mWjFGauK3umnsOqp9BTzWwGOAAiLCyZ%2BEPM%3D</IFrameURL> 
     <HasReviews>true</HasReviews> 
     </CustomerReviews> 
     <EditorialReviews> 
     <EditorialReview> 
      <Source>Product Description</Source> 
      <Content>&lt;strong&gt;3D Playback Type:&lt;/strong&gt; Active Shutter 3D Method&lt;br /&gt;&lt;strong&gt;Transmittance Method:&lt;/strong&gt; RF (Bluetooth)/ Full HD 3D Glasses Standard Compatible&lt;br /&gt;&lt;strong&gt;Battery Type: &lt;/strong&gt;Lithium-ion Polymer Rechargeable Battery&lt;br /&gt;&lt;strong&gt;Battery Duration:&lt;/strong&gt; Approximately 30 hours of operation for a 30-minute full battery charge (Approximately 3 hours of operation for a 2-minute battery charge)&lt;em&gt; *The battery duration will change as per the total usage time with the number of charge/discharge cycles &lt;/em&gt;&lt;br /&gt;&lt;strong&gt;Package Included:&lt;/strong&gt; 1 Pair of Eyewear &lt;br /&gt;Note: These glasses are only compatible with 2012 VIERA HDTVs&lt;br /&gt;&lt;br /&gt; &lt;div style="text-align: left;"&gt;&lt;strong&gt;Accessory Compatibility Chart&lt;br /&gt;&lt;/strong&gt;&lt;/div&gt; &lt;img height="375" src="http://g-ecx.images-amazon.com/images/G/01/electronics/Cat500/Panasonic/2012/accessory_compatibility_2._V138249826_.gif" width="650" /&gt;&lt;br /&gt;&lt;br /&gt;</Content> 
      <IsLinkSuppressed>0</IsLinkSuppressed> 
     </EditorialReview> 
     </EditorialReviews> 
     <SimilarProducts> 
     <SimilarProduct> 
      <ASIN>B007K9P7H0</ASIN> 
      <Title>Samsung SSG-4100GB 3D Active Glasses 2012 Models - Black</Title> 
     </SimilarProduct> 
     <SimilarProduct> 
      <ASIN>B00752VKSC</ASIN> 
      <Title>Panasonic VIERA TC-P55ST50 55-Inch 1080p 600Hz Full HD 3D Plasma TV</Title> 
     </SimilarProduct> 
     <SimilarProduct> 
      <ASIN>B00752R4PK</ASIN> 
      <Title>Panasonic DMP-BDT220 Integrated Wi-Fi 3D Blu-ray DVD Player</Title> 
     </SimilarProduct> 
     <SimilarProduct> 
      <ASIN>B00752VKFA</ASIN> 
      <Title>Panasonic VIERA TC-P55GT50 55-Inch 1080p 600Hz Full HD 3D Plasma TV</Title> 
     </SimilarProduct> 
     <SimilarProduct> 
      <ASIN>B00752VL8G</ASIN> 
      <Title>Panasonic VIERA TC-P60GT50 60-Inch 1080p 600Hz Full HD 3D Plasma TV</Title> 
     </SimilarProduct> 
     </SimilarProducts> 
     <BrowseNodes> 
     <BrowseNode> 
      <BrowseNodeId>3224438011</BrowseNodeId> 
      <Name>3D Glasses</Name> 
      <Ancestors> 
      <BrowseNode> 
       <BrowseNodeId>172532</BrowseNodeId> 
       <Name>Audio &amp; Video Accessories</Name> 
       <Ancestors> 
       <BrowseNode> 
        <BrowseNodeId>281407</BrowseNodeId> 
        <Name>Accessories &amp; Supplies</Name> 
        <Ancestors> 
        <BrowseNode> 
         <BrowseNodeId>493964</BrowseNodeId> 
         <Name>Categories</Name> 
         <IsCategoryRoot>1</IsCategoryRoot> 
         <Ancestors> 
         <BrowseNode> 
          <BrowseNodeId>172282</BrowseNodeId> 
          <Name>Electronics</Name> 
         </BrowseNode> 
         </Ancestors> 
        </BrowseNode> 
        </Ancestors> 
       </BrowseNode> 
       </Ancestors> 
      </BrowseNode> 
      </Ancestors> 
     </BrowseNode> 
     <BrowseNode> 
      <BrowseNodeId>1288264011</BrowseNodeId> 
      <Name>All product</Name> 
      <Ancestors> 
      <BrowseNode> 
       <BrowseNodeId>1267878011</BrowseNodeId> 
       <Name>Products</Name> 
       <IsCategoryRoot>1</IsCategoryRoot> 
       <Ancestors> 
       <BrowseNode> 
        <BrowseNodeId>1267877011</BrowseNodeId> 
       </BrowseNode> 
       </Ancestors> 
      </BrowseNode> 
      </Ancestors> 
     </BrowseNode> 
     <BrowseNode> 
      <BrowseNodeId>3545110011</BrowseNodeId> 
      <Name>Home Entertainment</Name> 
      <Children> 
      <BrowseNode> 
       <BrowseNodeId>3547652011</BrowseNodeId> 
       <Name>Blu-Ray Players</Name> 
      </BrowseNode> 
      <BrowseNode> 
       <BrowseNodeId>3547650011</BrowseNodeId> 
       <Name>DVD Players</Name> 
      </BrowseNode> 
      <BrowseNode> 
       <BrowseNodeId>6183878011</BrowseNodeId> 
       <Name>Home Theater Projectors</Name> 
      </BrowseNode> 
      <BrowseNode> 
       <BrowseNodeId>1294446011</BrowseNodeId> 
       <Name>Televisions</Name> 
      </BrowseNode> 
      <BrowseNode> 
       <BrowseNodeId>6183893011</BrowseNodeId> 
       <Name>Television Tuners and Receivers</Name> 
      </BrowseNode> 
      </Children> 
      <Ancestors> 
      <BrowseNode> 
       <BrowseNodeId>1294447011</BrowseNodeId> 
       <Name>Electronics</Name> 
       <Ancestors> 
       <BrowseNode> 
        <BrowseNodeId>1267878011</BrowseNodeId> 
        <Name>Products</Name> 
        <IsCategoryRoot>1</IsCategoryRoot> 
        <Ancestors> 
        <BrowseNode> 
         <BrowseNodeId>1267877011</BrowseNodeId> 
        </BrowseNode> 
        </Ancestors> 
       </BrowseNode> 
       </Ancestors> 
      </BrowseNode> 
      </Ancestors> 
     </BrowseNode> 
     <BrowseNode> 
      <BrowseNodeId>1293319011</BrowseNodeId> 
      <Name>Electronics</Name> 
      <Ancestors> 
      <BrowseNode> 
       <BrowseNodeId>1267879011</BrowseNodeId> 
       <Name>Special Features</Name> 
       <Ancestors> 
       <BrowseNode> 
        <BrowseNodeId>1267877011</BrowseNodeId> 
       </BrowseNode> 
       </Ancestors> 
      </BrowseNode> 
      </Ancestors> 
     </BrowseNode> 
     </BrowseNodes> 
    </Item> 
    </Items> 
</ItemLookupResponse> 

我想格式化這個數據到使用Javascript一個CSV格式化表格。

有人可以幫忙嗎?

在此先感謝! Praney

+0

需要將CSV轉換成HTML表格嗎? –

回答

5

經過長期的調查,我發現了一些東西,可以幫助你之後。

從重新發明輪子這一點來看,這是一項愚蠢而費時的任務,我一直在尋找其他優秀程序員在互聯網上已經建立的東西。

不幸的是,我無法找到一個直接轉換器形式的XML到CSV作爲您在PHP中提供的示例。

在我的工作示例XML必須從JSON先通過這樣的:

  • xml2json => json2csv

我花了一些作品在這裏和那裏,我會添加的,其中引用我實際上把所有的代碼片段用於在這個答案的末尾構建演示。通過這種方式,您將能夠獲得一份非常乾淨的文檔,幫助您改進此工具。

這裏一個簡單的演示:

function xmlTocsv() { 
 

 
    var data = $("#xmlArea").val(); 
 

 
    var xml = ""; 
 

 
    if (data !== null && data.trim().length !== 0) { 
 

 
     try { 
 
      xml = $.parseXML(data); 
 
     } catch (e) { 
 
      throw e; 
 
     } 
 

 
     var x2js = new X2JS(); 
 

 
     data = x2js.xml2json(xml); 
 
     jsonTocsvbyjson(data); 
 
     
 
    } 
 
} 
 

 
function jsonTocsvbyjson(data, returnFlag) { 
 

 
    arr = []; 
 
    flag = true; 
 

 
    var header = ""; 
 
    var content = ""; 
 
    var headFlag = true; 
 

 
    try { 
 

 
     var type1 = typeof data; 
 

 
     if (type1 != "object") { 
 
      data = processJSON($.parseJSON(data)); 
 
     } else { 
 
      data = processJSON(data); 
 
     } 
 

 
    } catch (e) { 
 
     if (returnFlag === undefined || !returnFlag) { 
 
      console.error("Error in Convert to CSV"); 
 
     } else { 
 
      console.error("Error in Convert :" + e); 
 
     } 
 
     return false; 
 
    } 
 

 
    $.each(data, function(k, value) { 
 
     if (k % 2 === 0) { 
 
      if (headFlag) { 
 
       if (value != "end") { 
 
        header += value + ","; 
 
       } else { 
 
        // remove last colon from string 
 
        header = header.substring(0, header.length - 1); 
 
        headFlag = false; 
 
       } 
 
      } 
 
     } else { 
 
      if (value != "end") { 
 
       var temp = data[k - 1]; 
 
       if (header.search(temp) != -1) { 
 
        content += value + ","; 
 
       } 
 
      } else { 
 
       // remove last colon from string 
 
       content = content.substring(0, content.length - 1); 
 
       content += "\n"; 
 
      } 
 
     } 
 

 
    }); 
 

 
    if (returnFlag === undefined || !returnFlag) { 
 
     $("#csvArea").val(header + "\n" + content); 
 
    } else { 
 
     return (header + "\n" + content); 
 
    } 
 
} 
 

 
function processJSON(data) { 
 

 
    $.each(data, function(k, data1) { 
 

 
     var type1 = typeof data1; 
 

 
     if (type1 == "object") { 
 

 
      flag = false; 
 
      processJSON(data1); 
 
      arr.push("end"); 
 
      arr.push("end"); 
 

 
     } else { 
 
      arr.push(k, data1); 
 
     } 
 

 
    }); 
 
    return arr; 
 
}
<!DOCTYPE html> 
 
<html> 
 
<head> 
 
<script type='text/javascript' src='https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js'></script> 
 
<script type='text/javascript' src="https://cdn.rawgit.com/abdmob/x2js/master/xml2json.js"></script> 
 
<script type="text/javascript" src="script.js"></script> 
 
</head> 
 
<body> 
 
    <h1>XML2CSV Demo</h1> 
 
    <button id="convertToXmlBtn" onclick="xmlTocsv()">XML => CSV</button> 
 
    
 
    <div>   
 
     <h4>XML:</h4> 
 
     <textarea id="xmlArea" cols="55" rows="15"></textarea> 
 
    </div> 
 
    
 
    <div> 
 
     <h4>CSV:</h4> 
 
     <textarea id="csvArea" cols="55" rows="15"></textarea> 
 
    </div>  
 
</body> 
 
</html>

參考文獻:

utils的:

+0

這個函數不能用於複雜的xml,但是它可以用於給定的示例xml謝謝@Stefano Saitta – Shree29