節點幫助

xml2js npm(它如何為開發人員運作)

發佈 2024年9月29日
分享:

介紹

開發人員可以通過在 Node.js 中結合使用 XML2JS 和 IronPDF,輕鬆將 XML 數據解析和 PDF 創建功能整合到他們的應用程式中。 一個受歡迎的 Node.js 套件稱為 XML2JS,使得將 XML 數據轉換為 JavaScript 對象變得容易,從而便於程序操作和使用 XML 資料。 相反,IronPDF 專門生成高品質的 PDF 文件,這些文件具有可調整的頁面大小、邊距和頁眉。 HTML,包括動態創建的素材。

開發人員現在可以使用XML2JS和IronPDF,直接從XML資料來源動態地創建PDF報告、發票或其他可列印材料。 為了自動化文件生成過程並確保在管理基於 XML 的數據時的正確性與靈活性,以用於 Node.js 應用程式的 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 物件來簡化處理,從而更快速地使用眾所周知的 JavaScript 語法來訪問和處理 XML 資料。

JavaScript 物件轉換

在 JavaScript 應用程式中處理 XML 資料變得很簡單,因為它可以順利地將 XML 資料轉換為結構化的 JavaScript 物件。

可配置選項

XML2JS 提供多種配置選項,允許您改變解析 XML 數據並將其轉換為 JavaScript 對象的方式。 這包括管理命名空間、文本內容、屬性和其他內容。

雙向轉換

透過其雙向轉換功能,可以將 JavaScript 物件轉換回簡單的 XML 字串,從而實現數據的往返更改。

非同步解析

大型 XML 文件可以透過該庫對異步解析過程的支持來良好處理,這不會干擾應用程式的事件迴圈。

錯誤處理

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

與 Promises 整合

它與 JavaScript Promises 配合良好,使處理 XML 數據的異步代碼模式更加清晰和易於處理。

可自訂解析掛鉤

開發人員可以通過創建自訂解析鉤子來增加數據處理流程的靈活性,這些鉤子允許他們攔截和更改 XML 解析行為的特殊選項。

創建和配置 xml2js

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

安裝 XML2JS npm

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

npm install xml2js
npm install xml2js
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'npm install xml2js
VB   C#

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);
});
const xml2js = require( 'xml2js');
' Example XML content
'INSTANT VB WARNING: An assignment within expression was extracted from the following statement:
'ORIGINAL LINE: 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> `;
"fiction"> (Of title) Harry Potter</title> (Of author) J.K.Rowling</author> </book> <book category="nonfiction"> (Of title) Thinking, Fast [and] Slow</title> (Of author) Daniel Kahneman</author> </book> </bookstore> `
'INSTANT VB TODO TASK: The following line contains an assignment within expression that was not extracted by Instant VB:
'ORIGINAL LINE: const xmlContent = ` <bookstore> <book category="fiction"> <title> Harry Potter</title> <author> J.K.Rowling</author> </book> <book category
const xmlContent = ` (Of bookstore) <book category="fiction"> (Of title) Harry Potter</title> (Of author) J.K.Rowling</author> </book> <book category
' Configure XML2JS parser
const parser = New xml2js.Parser()
' Parse XML content
'INSTANT VB TODO TASK: Lambda expressions and anonymous methods are not converted by Instant VB if local variables of the outer method are referenced within the anonymous method:
parser.parseString(xmlContent, (err, result) =>
If True Then
	If err Then
		console.error( '@Error parsing XML:', err);
		Return
	End If
	console.log( 'Parsed XML @to JavaScript object:', result);
End If
)
VB   C#

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, // Convert child elements to objects instead of arrays when there is only one child
  trim: true, // Trim 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, // Convert child elements to objects instead of arrays when there is only one child
  trim: true, // Trim 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
'INSTANT VB WARNING: An assignment within expression was extracted from the following statement:
'ORIGINAL LINE: 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> `;
"fiction"> (Of title) Harry Potter</title> (Of author) J.K.Rowling</author> </book> <book category="nonfiction"> (Of title) Thinking, Fast [and] Slow</title> (Of author) Daniel Kahneman</author> </book> </bookstore> `
'INSTANT VB TODO TASK: The following line contains an assignment within expression that was not extracted by Instant VB:
'ORIGINAL LINE: const xmlContent = ` <bookstore> <book category="fiction"> <title> Harry Potter</title> <author> J.K.Rowling</author> </book> <book category
const xmlContent = ` (Of bookstore) <book category="fiction"> (Of title) Harry Potter</title> (Of author) J.K.Rowling</author> </book> <book category
' Configure XML2JS parser with options
const parser = New xml2js.Parser({
	explicitArray:= False,
	trim:= True
})
' Parse XML content
'INSTANT VB TODO TASK: Lambda expressions and anonymous methods are not converted by Instant VB if local variables of the outer method are referenced within the anonymous method:
parser.parseString(xmlContent, (err, result) =>
If True Then
	If err Then
		console.error( '@Error parsing XML:', err);
		Return
	End If
	console.log( 'Parsed XML @to JavaScript object @with options:', result);
End If
)
VB   C#

處理非同步解析

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);
Private const xml2js = require( 'xml2js');
' Example XML content (assume it's loaded asynchronously, e.g., from a file)
Private const xmlContent = ` (Of bookstore) <book category="fiction"> (Of title) Harry Potter</title> (Of author) J.K.Rowling</author> </book> <book category="nonfiction"> (Of title) Thinking, Fast [and] Slow</title> (Of author) Daniel Kahneman</author> </book> </bookstore> `
' Configure XML2JS parser
Private const parser = New xml2js.Parser()
' Async function to parse XML content
Async Function parseXml(ByVal As xmlContent) As [function]
  Try
	const result = Await parser.parseStringPromise(xmlContent)
	console.log( 'Parsed XML @to JavaScript object(async):', result);
  Catch e1 As err
	console.error( '@Error parsing XML(async):', err);
  End Try
End Function
' Call async function to parse XML content
parseXml(xmlContent)
VB   C#

入門

為了在 Node.js 應用程式中使用 IronPDF 和 XML2JS,您必須先讀取 XML 數據,然後從已處理的內容中創建 PDF 文件。 這是一份詳細的操作指南,將幫助您安裝和配置這些庫。

什麼是 IronPDF?

IronPDF library 是一個強大的 Node.js 庫,用於處理 PDF。 其目的是將 HTML 內容轉換為具有卓越品質的 PDF 文件。 它簡化了將 HTML、CSS 和其他 JavaScript 檔案轉換為格式正確的 PDF 檔案的過程,同時不影響原始的線上內容。 這是一個對需要生成動態、可打印文檔(例如發票、證書和報告)的Web應用程式非常有用的工具。

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 install @ironsoftware/ironpdf
npm install @ironsoftware/ironpdf
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'npm install @ironsoftware/ironpdf
VB   C#

解析 XML 並生成 PDF

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

<!-- example.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>
<!-- example.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>
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'<!-- example.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>
VB   C#

創建 GeneratePdf.js Node.js 腳本,該腳本讀取 XML 文件,使用 XML2JS 將其解析為 JavaScript 對象,然後使用 IronPDF 從解析數據的結果對象創建 PDF。

// generatePdf.js
const fs = require('fs');
const xml2js = require('xml2js');
const IronPdf = require("@ironsoftware/ironpdf");
const fs = require('fs');
const document=IronPdf.PdfDocument;
var config=IronPdf.IronPdfGlobalConfig
config.setConfig({licenseKey:''});
// Function to read and parse XML
parseXml=async (filePath)=> {
  const parser = new xml2js.Parser();
  const xmlContent = fs.readFileSync(filePath, 'utf8');
  return awaitparser.parseStringPromise(xmlContent);
}
// Function to generate HTML content from the parser 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>
  `;
// root node mapping
  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
generatePdf=async()=> {
  try {
    var parser = await parseXml('./example.xml');
    const htmlContent = generateHtml(parser);
    document.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");
const fs = require('fs');
const document=IronPdf.PdfDocument;
var config=IronPdf.IronPdfGlobalConfig
config.setConfig({licenseKey:''});
// Function to read and parse XML
parseXml=async (filePath)=> {
  const parser = new xml2js.Parser();
  const xmlContent = fs.readFileSync(filePath, 'utf8');
  return awaitparser.parseStringPromise(xmlContent);
}
// Function to generate HTML content from the parser 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>
  `;
// root node mapping
  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
generatePdf=async()=> {
  try {
    var parser = await parseXml('./example.xml');
    const htmlContent = generateHtml(parser);
    document.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")
const fs = require( 'fs');
const document=IronPdf.PdfDocument
Dim config=IronPdf.IronPdfGlobalConfig config.setConfig({licenseKey: ''});
' Function to read and parse XML
'INSTANT VB TODO TASK: Local functions are not converted by Instant VB:
'parseXml=async(filePath)=>
'{
'  const parser = New xml2js.Parser();
'  const xmlContent = fs.readFileSync(filePath, 'utf8');
'  Return awaitparser.parseStringPromise(xmlContent);
'}
' Function to generate HTML content from the parser object
'INSTANT VB TODO TASK: Local functions are not converted by Instant VB:
'@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> `;
'' root node mapping
'  parsedXml.bookstore.book.forEach(book =>
'  htmlContent += ` </body> </html> `;
'  Return htmlContent;
'}
' Main function to generate PDF
'INSTANT VB TODO TASK: Local functions are not converted by Instant VB:
'generatePdf=async()=>
'{
'  try
'  {
'	var parser = await parseXml('./example.xml');
'	const htmlContent = generateHtml(parser);
'	document.fromHtml(htmlContent).@then((pdfres)=>
VB   C#

在 Node.js 應用程式中結合 IronPDF 和 XML2JS,能夠輕鬆地將 XML 資料轉換並解析多個文件成 PDF 檔案。 使用 XML2JS,當 XML 文件首次使用 Node.js 的 fs 模組讀取時,會將多個文件的 XML 內容解析為 JavaScript 對象。 隨後,構成基礎的 HTML 文本 PDF 是使用此處理數據動態生成的。

腳本首先從檔案讀取 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

結論

總而言之,在 Node.js 應用程式中,XML2JS 與 IronPDF 結合使用,提供了一種強大且可調整的方法,可將 XML 資料轉換為高品質的 PDF 文件。 使用 XML2JS 將 XML 解析為 JavaScript 對象,有效地簡化數據提取和操作。 在資料解析後,可以動態轉換成 HTML 文本,然後 IronPDF 可以輕鬆地將其轉換為結構良好的 PDF 文件。

需要從XML資料來源自動生成報告、發票和證書等文件的應用程序可能會發現這種組合特別有用。 開發人員可以透過利用這兩個函式庫的優勢,確保 PDF 輸出準確且美觀,簡化工作流程,並提升 Node.js 應用程式處理文件生成任務的能力。

藉助IronPDF和 IronSoftware 為開發人員提供更多的在線應用程序和功能,同時提高開發效率,並利用IronSoftware高度靈活的系統和套件。

當授權選項明確且針對專案具體時,開發人員更容易選擇最佳模型。 這些功能讓開發人員能以簡單易用、高效且一致的方式解決各種問題。

< 上一頁
LoopBack node js(它如何為開發人員工作)
下一個 >
複製 npm(開發者如何運作)

準備開始了嗎? 版本: 2024.9 剛剛發布

免費 npm 安裝 查看許可證 >