使用 Javascript 将 XML 转换为 CSV

2023-11-27

我正在寻求一些帮助,尝试将从 Amazon Product API 检索到的 XML 转换为 CSV(逗号分隔值)格式。

我在这里找到了类似的主题:XML 到 CSV 转换问题但它使用 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 格式的表。

有人可以帮忙吗?

提前致谢! 普拉尼


经过长时间的调查,我发现了一些可能对你有帮助的东西。

从重新发明轮子是一项愚蠢且耗时的任务开始,我一直在寻找其他优秀程序员已经在互联网上构建的内容。

不幸的是,我无法找到从 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>

参考:

  • XML 到 CSV 转换器
  • x2js - 对于 JavaScript,XML 到 JSON,反之亦然

Utils:

  • 工作笨蛋
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Javascript 将 XML 转换为 CSV 的相关文章

  • Firebase Function 从其他文件导入函数 - javascript

    我正在使用 javascript 构建 firebase 函数 现在我有很多内部调用函数 我计划将这些函数移动到不同的文件中 以避免 index js 变得非常混乱 下面是当前的文件结构 functions index js interna
  • javascript中怪异模式的元素宽度?

    我一直在浏览所有流行的 js 库 但我找不到一个具有 DOM 元素宽度函数的库 该函数实际上可以解释 Internet Explorer 中的怪异模式 问题是 当启用怪异模式时 填充和边框不会计入宽度 据我所知 当省略 doctype 或将
  • 匹配数组中的对象并合并

    UPDATE 我有一个名为的对象数组cars包含 li 标签 其中包含有关汽车的属性数据 例如价格 汽车类型等 我的目标是 如果这些汽车符合某些标准 则将它们合并到一个列表中 要求 快速性能 保持相同的汽车数组结构 Main Goal Ma
  • Access-Control-Allow-Headers 不允许请求标头字段 Access-Control-Allow-Headers

    我试图通过发布请求将文件发送到我的服务器 但是当它发送时会导致错误 Access Control Allow Headers 不允许请求标头字段 Content Type 所以我用谷歌搜索了错误并添加了标题 http post rootSc
  • 根据用户区域设置过滤字符串列表

    当使用 AngularJS 1 6 处理 JavaScript 项目时 我有一个要过滤的字符串列表 例如 假设我的列表包含 rbol cig e a nido and tubo 当过滤西班牙语字符串时 如果我过滤 u 我会期望两者cig e
  • 如何获取传单标记簇中点击事件的图块?

    这是我的代码 function onMapClick e e originalEvent defaultPrevented true var orig e originalEvent console log orig target map
  • 使用 javascript 禁用按钮:FF 与 IE

    我有一排按钮 它们都会创建一个我想在新选项卡中打开的 pdf 文件 这样按钮页面就会保持在顶部 并且 pdf 会打开以进行打印 为了防止单击按钮两次 我禁用该按钮 如下所示 我使用 python
  • Ajax JSON 数据和灯箱冲突

    我有一个带有灯箱插件的画廊设置光廊 http sachinchoolur github io lightGallery docs 该画廊与静态 HTML 完美配合 当我动态抓取 API 数据并尝试让灯箱处理这些项目时 问题就出现了 我似乎无
  • mouseover 和 mouseout 事件在子进程上触发

    代码 div div div div 如果我将鼠标悬停在Navigation the Drop Downdiv 向下滑动 如果我将鼠标移开 它会向上滑动 问题是如果我将鼠标悬停在孩子上Drop Downdiv它也向上滑 动 有谁知道我该如何
  • 嵌套辅助函数和性能

    嵌套辅助函数对于使代码更易于理解非常有用 谷歌甚至建议在他们的应用程序中使用嵌套函数时尚指南 https google styleguide googlecode com svn trunk javascriptguide xml Nest
  • 如何创建自定义元素扩展类的新实例

    我正在尝试以下示例谷歌开发者网站 https developers google com web fundamentals getting started primers customelements extendhtml我收到错误 Typ
  • 如何检查 Map 或 Set 是否为空?

    对于 JavaScript 中的传统对象 使用以下命令很容易检查它是否为空 Object keys method const emptyObj console log Object keys emptyObj length 0 true i
  • React + Semantic-UI:在 UI MODAL 中使用表单

    在没有 React 的普通旧 Semantic UI 中 我已经能够毫无问题地将表单放入 Modal 中 使用 Semantic UI React 版本 我能够在模态中显示表单 但它并没有按照我期望的方式工作 例如 模态框显示后 模态框内的
  • 限制 jQuery id 字符串吗?

    简而言之 我的问题是字符串在 jQuery 中作为可搜索 id 或可搜索内容有什么限制 更新 我得到了 ID 部分 但不是为什么我什至无法使用该字符串搜索 html 内容 对于任何愿意告诉我一个正则表达式来将模式从 MM dd yy HH
  • ExpressJS - DELETE 请求后 res.redirect

    我一直在寻找如何执行此操作 我正在尝试在发出删除请求后重定向 这是我正在使用的代码没有重定向 exports remove function req res var postId req params id Post remove id p
  • javascript:window.print() 打印 2 页,而我有 1 页

    我有一个简单的 HTML 文档 其中仅包含图像标签 我想在文档加载后打印图像 我的代码 img src form1 jpg alt form1 style margin 0 auto display block 它可以工作 但问题是它打印图
  • 如何按字母顺序排序并先小写排序

    如何获得以下排序的结果Food to Eat然后是 食物123 显然 第二个较低的 o 应该将 要吃的食物 带到排序后的第一个项目中 我很惊讶这个问题不容易通过谷歌找到答案 这个壮举没有包含在 javascript 标准中也让我感到惊讶 F
  • Jquery 两个字段的时间差(以小时为单位)

    我的表单中有两个字段 用户可以在其中选择输入时间 start time end time 我想在更改这些字段时重新计算另一个字段的值 我想做的是获取两次之间的小时数 例如 如果我的开始时间为 5 30 结束时间为 7 50 我想将结果 2
  • 更改javascript nodejs中所有页面的href url

    我已经实现了具有多种语言下拉菜单的引导导航栏 当我选择语言时 它将翻译页面 如何更改其他页面的 url 和按钮文本 当我选择french 将所有网址更改为 fr about and fr contact 如何使用 JavaScript 进行
  • 如何使用引用该键的变量来获取对象键中的值?

    我有一个对象 我可以引用密钥a如下 var obj a A b B c C console log obj a return string A 我想通过使用变量引用对象键来获取值 如下所示 var name a console log ob

随机推荐

  • 将 HtmlDocument.DomDocument 转换为字符串

    如何将 HtmlDocument DomDocument 转换为字符串 这个例子有点复杂 但是 假设你有一个名为Form1 带有一个名为的 WebBrowser 控件webBrowser1 变量content将包含形成文档的标记 priva
  • 如何使用单个replaceAll找到Java中两个字符串共有的字符?

    所以假设我有 String s 1479K String t 459LP 我想回来 String commonChars 49 两个字符串之间的公共字符 显然 可以使用如下标准循环来完成 String commonChars for i 0
  • 如何在 Android 中以编程方式添加联系人?

    我已经尝试过 但未添加联系人 ContentResolver cr this getContentResolver ContentValues cv new ContentValues cv put ContactsContract Com
  • Git合并忽略空格[重复]

    这个问题在这里已经有答案了 可能的重复 git 空格问题 我怎样才能设置不报告纯粹由于合并时的空格而导致的冲突 如下所示 lt lt lt lt lt lt lt HEAD open RESDBFILE lt this day result
  • SCTP 和 webrtc

    我看到 SCTP 将用于从 Chrome 31 开始的数据通道 并且根据这个 google group thread 基于 RTP 的正式通道有时将在 2014 年 2 月被弃用 https groups google com forum
  • 如何使用 etrace 和动态库来按时间顺序跟踪 C++ 中的函数调用?

    背景 我有一个大型模拟工具 我需要了解它的逻辑行为 为了做到这一点 如果我有函数调用的时间顺序 我会得到最多的帮助 作为一个最小的工作示例 我在网上找到了很多工具 比如Cyg分析器 and etrace 我在寻找解决方案时变得非常痛苦 以至
  • 如何修改传递给自定义 CMake 目标的环境变量?

    也许我错过了一些明显的东西 但我似乎无法弄清楚如何显式设置通过启动的进程可以看到的环境变量add custom target 我尝试了以下方法 set ENV PATH C Some Path ENV PATH add custom tar
  • 如何在 SQL Server 的 log4net 配置中使用存储过程进行日志记录

    我该如何更新commandText以及存储过程的参数部分 以便我可以通过 log4net 将错误记录到 SQL Server 中 我使用的是 SQL Server 2008 我的附加程序配置如下所示
  • Flask SQLAlchemy 设置动态 URI

    我有一个在 WSGI 下提供的 Flask 应用程序 其中数据库 URI 随着时间的推移而变化 每两个小时 URI 就会切换到另一个数据库 我利用这段时间填充一个数据库 而另一个数据库则为应用程序提供数据 我很难弄清楚如何最好地配置会话 以
  • 如何对文件执行 SHA1 哈希?

    如果我有一个文件想要监视任何更改 除了查看文件日期戳等 我如何对其内容执行 SHA1 哈希 I think这就是 GIT 所做的 所以我只想学习如何做 using FileStream stream File OpenRead C File
  • z-index 和 Javascript 事件

    我有几个彼此重叠的 div 具有不同的 z index 值 浏览器的默认行为似乎是触发绑定到最顶部 z index div 的事件 IE 我有多个onclick每个 div 都有一个 但当单击该区域时只有顶部的一个被触发 有没有一种方法可以
  • MVVM - RaisePropertyChanged 将代码变得一团糟

    MVVM 新手 请原谅我的无知 我认为我使用它是正确的 但我发现我的 ViewModel 有太多这些 RaisePropertyChanged SomeProperty 每次我设置一个属性时 我都必须提高那个该死的属性的变化 我怀念那些我可
  • 如何告诉 Proguard 混淆类名

    我希望混淆类名 我在 Proguard cfg 中有这一行 keepclasseswithmembers class public static
  • 使用 Spring 加载属性(通过系统属性)

    我的问题如下 I have server properties针对不同的环境 这些属性的路径是通过名为的系统属性提供的propertyPath 我该如何指导我的applicationContext xml加载给定的属性propertyPat
  • 什么是头文件和库文件? [复制]

    这个问题在这里已经有答案了 可能的重复 头文件和库有什么区别 谁能告诉我头文件和库文件的实际含义是什么以及它们的区别 例如 我们在程序中包含扩展名为 h 的头文件 它只是定义 但实际的实现是在库文件中定义的 这是在链接阶段完成的 这就是人们
  • C# 中 ++i 与 i += 1 有性能差异吗?

    i a 应等于 i i a 在 a 1 的情况下 据说它的效率不如 i 因为它涉及更多的内存访问 或者编译器会让它与 i 完全相同吗 答案很简单 C 编译器将 C 源代码转换为 IL 操作码 没有专用的 IL 操作码可以执行与 运算符等效的
  • 存储为 BINARY XML 时 Oracle XMLType 有多大

    Oracle 文档声称它将 XMLType 存储为 BINARY XML 比存储为 CLOB 更紧凑 但是我如何知道二进制 xml 占用了多少空间呢 CREATE TABLE t x XMLTYPE XMLTYPE x STORE AS B
  • logback - 重新映射特定记录器的日志级别

    我有一个 logback 配置 其中有一个带有阈值过滤器的附加程序
  • 如何在react中设置cookie?

    本来我是用下面的ajax来设置cookie的 function setCookieAjax ajax url Web Servlet setCookie contentType application x www form urlencod
  • 使用 Javascript 将 XML 转换为 CSV

    我正在寻求一些帮助 尝试将从 Amazon Product API 检索到的 XML 转换为 CSV 逗号分隔值 格式 我在这里找到了类似的主题 XML 到 CSV 转换问题但它使用 PHP 我想使用 javascript 这是我所拥有的示