节点帮助

xml2js npm(开发人员如何使用)

发布 2024年九月29日
分享:

介绍

开发人员可以通过在 Node.js 中将 XML2JS 与 IronPDF 结合使用,轻松地将 XML 数据解析和 PDF 创建功能集成到他们的应用程序中。 一个受欢迎的 Node.js 包名为 XML2JS,它可以轻松地将 XML 数据转换为 JavaScript 对象,从而方便程序化地操作和使用 XML 内容。 相反,IronPDF 专注于生成高质量的 PDF 文档,可调整页面尺寸、边距和页眉。 HTML,包括动态创建的材料。

开发人员现在可以通过使用XML2JS和IronPDF,从XML数据源动态创建PDF报告、发票或其他可打印材料。 为了自动化文档生成流程,并确保在管理基于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对象的过程,更快速地使用著名的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文档非常有用。以下是如何在XML2JS中使用async/await语法的示例:

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 库是一个强大的 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和 铁软件(Iron Software) 为开发人员提供更多的在线应用和功能,更高效的开发,同时利用IronSoftware高度灵活的系统和套件。

当许可证选项明确且专门针对项目时,开发人员更容易选择最佳模式。 这些功能让开发者能够以一种易于使用、高效且一致的方式解决各种问题。

< 前一页
LoopBack Node.js(开发者如何工作)
下一步 >
复制 npm(对开发者的运作方式)

准备开始了吗? 版本: 2024.9 刚刚发布

免费 npm 安装 查看许可证 >