跳至頁尾內容
NODE 說明

xml2js npm(開發者的使用方法)

開發者可以通過在Node.js中結合XML2JS和IronPDF,輕鬆地將XML資料解析和PDF建立功能納入其應用程式中。 XML2JS 是一個受歡迎的Node.js套件,可輕鬆將XML資料轉換為JavaScript物件,方便程式化操作和使用XML材料。 另一方面,IronPDF專注於從HTML生成高品質的PDF文件,支持可調整的頁面尺寸、邊距和頁眉,包括動態建立的資料。

借助XML2JS和IronPDF,開發者現在可以直接從XML資料源中動態建立PDF報告、發票或其他可列印材料。 此整合利用了這兩個程式庫的優勢,以自動化文件生成過程,確保Node.js應用程式中基於XML資料的PDF輸出管理的準確性和靈活性。

什麼是xml2js?

名為XML2JS的Node.js套件使得解析和建立簡單的XML(可擴展標記語言)到JavaScript物件轉換器變得更容易。 通過提供解析XML文件或文字的方法,並將其轉換為結構化的JavaScript物件,它使得處理XML文件變得更加容易。 此過程提供應用程式選擇,如何僅管理XML屬性、文字內容、命名空間、合併屬性或建立屬性及其他XML特定特徵的選項,賦予應用程式自由解釋和使用XML資料。

xml2js npm (對開發者的工作原理): 圖1

該程式庫支持同步和異步解析操作,可處理大型XML文件或需要非阻塞解析的情況。 此外,XML2JS提供在將XML轉換為JavaScript物件過程中的驗證和錯誤解決機制,保證資料處理操作的穩定性和可靠性。 總而言之,Node.js應用程式經常使用XML2JS來整合基於XML的資料源、配置軟體、改變資料格式,簡化自動化的測試過程。

由於以下特性,XML2JS是處理Node.js應用程式中的XML資料的靈活和不可或缺的工具:

XML解析

利用XML2JS,開發者可以通過簡化將XML字串或文件處理成JavaScript物件,加速存取和處理XML資料,使用知名的JavaScript語法。

JavaScript物件轉換

通過將XML資料順利地轉換為結構化的JavaScript物件,使得在JavaScript應用程式中使用XML資料變得簡單。

可配置選項

XML2JS提供了多種配置選項,方便您改變XML資料解析並轉換為JavaScript物件的方式。 這包括管理命名空間、文字內容、屬性及其他事項。

雙向轉換

其雙向轉換能力使得圓環資料變更成為可能,允許將JavaScript物件轉回到簡單的XML字串。

異步解析

程式庫對異步解析過程的支持,在處理大型XML文件時不會干擾應用程式的事件迴圈。

錯誤處理

為了解決在XML解析和轉換過程中可能出現的驗證問題和解析錯誤,XML2JS提供了強大的錯誤處理方法。

與Promises的整合

它很好地與JavaScript Promises配合,讓處理XML資料的異步程式碼模式更清晰、更易於處理。

可自定義解析鉤子

開發者可以通過建立自定義解析鉤子,來為截取和改變XML解析行為提供特別選項,增加資料處理過程的靈活性。

建立和配置xml2js

在Node.js應用程式中使用XML2JS的初始步驟是安裝程式庫並配置以滿足您的需求。 這是一個詳細的設置和建立XML2JS的操作指南。

安裝XML2JS npm

首先確保已安裝npm和Node.js。XML2JS可使用npm進行安裝:

npm install xml2js
npm install xml2js
SHELL

XML2JS的基本用法

這是一個使用XML2JS將XML文字解析為JavaScript物件的簡單範例:

const xml2js = require('xml2js');

// Example XML content
const xmlContent = `
<bookstore>
  <book category="fiction">
    <title>Harry Potter</title>
    <author>J.K. Rowling</author>
  </book>
  <book category="nonfiction">
    <title>Thinking, Fast and Slow</title>
    <author>Daniel Kahneman</author>
  </book>
</bookstore>
`;

// Configure XML2JS parser
const parser = new xml2js.Parser();

// Parse XML content
parser.parseString(xmlContent, (err, result) => {
  if (err) {
    console.error('Error parsing XML:', err);
    return;
  }
  console.log('Parsed XML to JavaScript object:', result);
});
const xml2js = require('xml2js');

// Example XML content
const xmlContent = `
<bookstore>
  <book category="fiction">
    <title>Harry Potter</title>
    <author>J.K. Rowling</author>
  </book>
  <book category="nonfiction">
    <title>Thinking, Fast and Slow</title>
    <author>Daniel Kahneman</author>
  </book>
</bookstore>
`;

// Configure XML2JS parser
const parser = new xml2js.Parser();

// Parse XML content
parser.parseString(xmlContent, (err, result) => {
  if (err) {
    console.error('Error parsing XML:', err);
    return;
  }
  console.log('Parsed XML to JavaScript object:', result);
});
JAVASCRIPT

xml2js npm (對開發者的工作原理): 圖2

配置選項

XML2JS提供了一系列配置選項和預設設置,允許您改變解析的行為方式。 以下是一個設置XML2JS的預設解析設置的範例:

const xml2js = require('xml2js');

// Example XML content
const xmlContent = `
<bookstore>
  <book category="fiction">
    <title>Harry Potter</title>
    <author>J.K. Rowling</author>
  </book>
  <book category="nonfiction">
    <title>Thinking, Fast and Slow</title>
    <author>Daniel Kahneman</author>
  </book>
</bookstore>
`;

// Configure XML2JS parser with options
const parser = new xml2js.Parser({
  explicitArray: false,  // Converts child elements to objects instead of arrays when there is only one child
  trim: true  // Trims leading/trailing whitespace from text nodes
});

// Parse XML content
parser.parseString(xmlContent, (err, result) => {
  if (err) {
    console.error('Error parsing XML:', err);
    return;
  }
  console.log('Parsed XML to JavaScript object with options:', result);
});
const xml2js = require('xml2js');

// Example XML content
const xmlContent = `
<bookstore>
  <book category="fiction">
    <title>Harry Potter</title>
    <author>J.K. Rowling</author>
  </book>
  <book category="nonfiction">
    <title>Thinking, Fast and Slow</title>
    <author>Daniel Kahneman</author>
  </book>
</bookstore>
`;

// Configure XML2JS parser with options
const parser = new xml2js.Parser({
  explicitArray: false,  // Converts child elements to objects instead of arrays when there is only one child
  trim: true  // Trims leading/trailing whitespace from text nodes
});

// Parse XML content
parser.parseString(xmlContent, (err, result) => {
  if (err) {
    console.error('Error parsing XML:', err);
    return;
  }
  console.log('Parsed XML to JavaScript object with options:', result);
});
JAVASCRIPT

處理異步解析

XML2JS支持異步解析,這對於管理大型XML文件而不停止事件迴圈非常有用。以下是一個使用async/await語法搭配XML2JS的範例:

const xml2js = require('xml2js');

// Example XML content (assume it's loaded asynchronously, e.g., from a file)
const xmlContent = `
<bookstore>
  <book category="fiction">
    <title>Harry Potter</title>
    <author>J.K. Rowling</author>
  </book>
  <book category="nonfiction">
    <title>Thinking, Fast and Slow</title>
    <author>Daniel Kahneman</author>
  </book>
</bookstore>
`;

// Configure XML2JS parser
const parser = new xml2js.Parser();

// Async function to parse XML content
async function parseXml(xmlContent) {
  try {
    const result = await parser.parseStringPromise(xmlContent);
    console.log('Parsed XML to JavaScript object (async):', result);
  } catch (err) {
    console.error('Error parsing XML (async):', err);
  }
}

// Call async function to parse XML content
parseXml(xmlContent);
const xml2js = require('xml2js');

// Example XML content (assume it's loaded asynchronously, e.g., from a file)
const xmlContent = `
<bookstore>
  <book category="fiction">
    <title>Harry Potter</title>
    <author>J.K. Rowling</author>
  </book>
  <book category="nonfiction">
    <title>Thinking, Fast and Slow</title>
    <author>Daniel Kahneman</author>
  </book>
</bookstore>
`;

// Configure XML2JS parser
const parser = new xml2js.Parser();

// Async function to parse XML content
async function parseXml(xmlContent) {
  try {
    const result = await parser.parseStringPromise(xmlContent);
    console.log('Parsed XML to JavaScript object (async):', result);
  } catch (err) {
    console.error('Error parsing XML (async):', err);
  }
}

// Call async function to parse XML content
parseXml(xmlContent);
JAVASCRIPT

快速入門

為在Node.js應用程式中使用IronPDF和XML2JS,您必須先讀取XML資料,然後從處理後的內容建立PDF文件。 這是一個詳細的指南,可以幫助您安裝並配置這些程式庫。

什麼是IronPDF?

IronPDF程式庫是強大的Node.js程式庫,用來處理PDF。 它的目標是將HTML內容轉變為品質優良的PDF文件。 它簡化了將HTML、CSS及其他JavaScript文件轉換為格式正確的PDF的過程,而不影響原始的網路內容。 這對需要生成動態、可列印文件,如發票、認證和報告的網路應用程式非常有用。

IronPDF具有多種特性,包括可定制的頁面設置、頁眉、頁腳,及插入字體和圖像的能力。 它支持複雜的佈局和風格,確保所有測試輸出的PDF都遵循指定的設計。 此外,IronPDF控制HTML中JavaScript的執行,允許精確呈現動態和互動內容。

xml2js npm (對開發者的工作原理): 圖3

IronPDF的功能

從HTML生成PDF

將HTML、CSS和JavaScript轉換為PDF。 支持兩個現代網路標準:媒體查詢和響應式設計。 有助於使用HTML和CSS動態裝飾PDF發票、報告和文件。

PDF編輯

可以將文字、圖像和其他材料新增到現有的PDF中。 從PDF文件中提取文字和圖片。 將多個PDF合併為一個文件。將PDF文件拆分成多個不同的文件。 新增頁眉、頁腳、註釋和水印。

效能和可靠性

在工業環境中字元高性能和可靠性是可取的設計特性。 輕鬆處理大型文件集。

安裝IronPDF

要獲得在Node.js專案中使用PDF的必要工具,請安裝IronPDF套件。

 npm i @ironsoftware/ironpdf

解析XML並生成PDF

例如,讓我們生成一個名為example.xml的基本XML文件:


<bookstore>
  <book category="fiction">
    <title>Harry Potter</title>
    <author>J.K. Rowling</author>
  </book>
  <book category="nonfiction">
    <title>Thinking, Fast and Slow</title>
    <author>Daniel Kahneman</author>
  </book>
</bookstore>

<bookstore>
  <book category="fiction">
    <title>Harry Potter</title>
    <author>J.K. Rowling</author>
  </book>
  <book category="nonfiction">
    <title>Thinking, Fast and Slow</title>
    <author>Daniel Kahneman</author>
  </book>
</bookstore>
XML

建立generatePdf.js Node.js腳本,該腳本讀取XML文件,使用XML2JS解析成JavaScript物件,然後使用IronPDF從解析後的資料物件中建立PDF。

// generatePdf.js
const fs = require('fs');
const xml2js = require('xml2js');
const IronPdf = require('@ironsoftware/ironpdf');

// Configure IronPDF with license if necessary
var config = IronPdf.IronPdfGlobalConfig;
config.setConfig({ licenseKey: '' });

// Function to read and parse XML
const parseXml = async (filePath) => {
  const parser = new xml2js.Parser();
  const xmlContent = fs.readFileSync(filePath, 'utf8');
  return await parser.parseStringPromise(xmlContent);
};

// Function to generate HTML content from the parsed object
function generateHtml(parsedXml) {
  let htmlContent = `
    <!DOCTYPE html>
    <html lang="en">
    <head>
      <meta charset="UTF-8">
      <title>Bookstore</title>
      <style>
        body { font-family: Arial, sans-serif; }
        .book { margin-bottom: 20px; }
      </style>
    </head>
    <body>
      <h1>Bookstore</h1>
  `;

  // Iterate over each book to append to the HTML content
  parsedXml.bookstore.book.forEach(book => {
    htmlContent += `
      <div class="book">
        <h2>${book.title}</h2>
        <p><strong>Category:</strong> ${book.$.category}</p>
        <p><strong>Author:</strong> ${book.author}</p>
      </div>
    `;
  });

  htmlContent += `
    </body>
    </html>
  `;
  return htmlContent;
}

// Main function to generate PDF
const generatePdf = async () => {
  try {
    const parser = await parseXml('./example.xml');
    const htmlContent = generateHtml(parser);

    // Convert HTML to PDF
    IronPdf.PdfDocument.fromHtml(htmlContent).then((pdfres) => {
      const filePath = `${Date.now()}.pdf`;
      pdfres.saveAs(filePath).then(() => {
        console.log('PDF saved successfully!');
      }).catch((e) => {
        console.log(e);
      });
    });
  } catch (error) {
    console.error('Error:', error);
  }
};

// Run the main function
generatePdf();
// generatePdf.js
const fs = require('fs');
const xml2js = require('xml2js');
const IronPdf = require('@ironsoftware/ironpdf');

// Configure IronPDF with license if necessary
var config = IronPdf.IronPdfGlobalConfig;
config.setConfig({ licenseKey: '' });

// Function to read and parse XML
const parseXml = async (filePath) => {
  const parser = new xml2js.Parser();
  const xmlContent = fs.readFileSync(filePath, 'utf8');
  return await parser.parseStringPromise(xmlContent);
};

// Function to generate HTML content from the parsed object
function generateHtml(parsedXml) {
  let htmlContent = `
    <!DOCTYPE html>
    <html lang="en">
    <head>
      <meta charset="UTF-8">
      <title>Bookstore</title>
      <style>
        body { font-family: Arial, sans-serif; }
        .book { margin-bottom: 20px; }
      </style>
    </head>
    <body>
      <h1>Bookstore</h1>
  `;

  // Iterate over each book to append to the HTML content
  parsedXml.bookstore.book.forEach(book => {
    htmlContent += `
      <div class="book">
        <h2>${book.title}</h2>
        <p><strong>Category:</strong> ${book.$.category}</p>
        <p><strong>Author:</strong> ${book.author}</p>
      </div>
    `;
  });

  htmlContent += `
    </body>
    </html>
  `;
  return htmlContent;
}

// Main function to generate PDF
const generatePdf = async () => {
  try {
    const parser = await parseXml('./example.xml');
    const htmlContent = generateHtml(parser);

    // Convert HTML to PDF
    IronPdf.PdfDocument.fromHtml(htmlContent).then((pdfres) => {
      const filePath = `${Date.now()}.pdf`;
      pdfres.saveAs(filePath).then(() => {
        console.log('PDF saved successfully!');
      }).catch((e) => {
        console.log(e);
      });
    });
  } catch (error) {
    console.error('Error:', error);
  }
};

// Run the main function
generatePdf();
JAVASCRIPT

在Node.js應用程式中結合IronPDF和XML2JS是將XML資料轉換為PDF文件並解析多個文件的簡便方法。 使用XML2JS,對多個文件的XML內容在首先使用Node.js的fs模塊讀取XML文件後,解析為JavaScript物件。 隨後,使用這些處理後的資料動態生成組成PDF基礎的HTML文字。

腳本首先從文件讀取XML文字,並使用xml2js解析為JavaScript物件。 從解析後的資料物件中,自定義函式建立HTML內容,結構化它所需的元素,例如,書店的作者和標題。 此HTML隨後使用IronPDF渲染成PDF緩衝區。 生成的PDF然後被儲存到文件系統中。

xml2js npm (對開發者的工作原理): 圖4

利用IronPDF高效的HTML到PDF轉換和XML2JS強大的XML解析能力,此方法提供了從Node.js應用程式中的XML資料建立PDF的簡化方法。 該連接使得動態XML資料可以轉換為可列印且格式良好的PDF文件。 這使其成為需要從XML來源自動生成文件的應用程式的理想選擇。

xml2js npm (對開發者的工作原理): 圖5

結論

總結來說,XML2JS和IronPDF在Node.js應用程式中結合,提供了將XML資料轉換為高品質PDF文件的強大和靈活的方式。 使用XML2JS有效地將XML解析為JavaScript物件,使資料提取和操作變得簡單。 在資料被解析後,它可以動態地轉換為HTML文字,然後由IronPDF輕鬆轉換為格式正確的PDF文件。

此組合可能特別有助於需要從XML資料源中自動建立如報告、發票和證書的文件的應用程式。 開發者可以通過利用這兩個程式庫的優點,確保準確和美觀的PDF輸出,簡化工作流程,並提升Node.js應用程式處理文件生成任務的能力。

IronPDF為開發者提供了更多的功能以及更高效的開發,同時利用Iron Software高度靈活的系統和套件。

當授權選項明確且特定於專案時,開發者更容易選擇最佳模型。 這些功能讓開發者能夠以簡便、高效和統一的方式解決多種問題。

Darrius Serrant
全端軟體工程師(WebOps)

Darrius Serrant擁有邁阿密大學的電腦科學學士學位,並在Iron Software擔任全端WebOps行銷工程師。從小就對程式設計有興趣,他認為計算既神秘又易於理解,成為創意和問題解決的完美媒介。

在Iron Software,Darrius喜歡創造新事物並簡化複雜的概念,使其更易於理解。作為我們的常駐開發人員之一,他還志願教學,將他的專業知識傳授給下一代。

對Darrius來說,他的工作是有意義的,因為它有價值且對社會有真正的影響。

Iron 支援團隊

我們線上24小時,每週5天。
聊天
電子郵件
給我打電話