在 Node.js 中解析 XML

Posted

技术标签:

【中文标题】在 Node.js 中解析 XML【英文标题】:Parsing XML in Node.js 【发布时间】:2015-12-25 17:53:22 【问题描述】:

我正在开发一个 Node.js 应用程序。我需要能够解析 Sitemap.xml 文件。目前,我有一个文件站点地图,如下所示:

<?xml version="1.0" encoding="utf-8"?>

<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"   xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd">

  <url>
    <loc>http://www.example.com</loc>
    <lastmod>2014-03-05</lastmod>
    <changefreq>monthly</changefreq>
  </url>

  <url>
    <loc>http://www.example.com/contact</loc>
    <lastmod>2014-03-05</lastmod>
    <changefreq>never</changefreq>
  </url>

  <url>
    <loc>http://www.example.com/about</loc>
    <lastmod>2015-03-01</lastmod>
    <changefreq>monthly</changefreq>
  </url>
</urlset>

我正在尝试解析这个 xml 文件并将其加载到我的 javascript 类中,如下所示:

class SiteUrl 
  constructor() 
    this.loc = '';
    this.lastMod = null;
    this.changeFreq = 'never';
  

  static loadFromSitemap(sitemapPath) 

  

来自 C# 背景,我知道我可以这样做:

public static List<SiteUrl> LoadFromSitemap(string sitemapPath)

  // Load the sitemap into memory
  XDocument sitemap = XDocument.Load(sitemapPath);

  // Get the posts from the sitemap.
  List<SiteUrl> posts = (from post in sitemap.Root.Elements(ns + "url")
                         where ((string)post.Element(ns + "loc"))
                         select new SiteUrl(post)).ToList();

  return posts;

我不确定如何在 Node 世界中读取和解析 Xml。

【问题讨论】:

有无数的 Node.js 模块可以满足任何需求。我觉得 XML 解析已经实现了 100 次......(顺便说一句:class 关键字在 JS 中是全新的;确保您所处的环境支持它;请参阅:developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…) 可能重复:The best node module for XML parsing 【参考方案1】:

你可以试试这个 npm 模块:

https://github.com/Leonidas-from-XIV/node-xml2js

它完成了工作并构建了一个不错的 JavaScript 对象

【讨论】:

以上是关于在 Node.js 中解析 XML的主要内容,如果未能解决你的问题,请参考以下文章

无法在 Node.js 中解析 JSON [重复]

在 Node.JS 中解析 Microsoft Office 文件

在 Node.js 中解析巨大的日志文件 - 逐行读取

如何在 Node.js 中解析包含“NaN”的 JSON 字符串

在 Node js 中解析 XML:Zapier

在 Node.js 中解析没有 ID 或 CSS 选择器的 HTML 表格