Chuyển đổi json sang xml nodejs
Hiện tại cũng có một api ứng dụng web này mà bạn có thể sử dụng để chuyển đổi trực tuyến. Xem Sử dụng Apps Script để chuyển đổi xml json Show
Nội dung trang ẩn 1 Cách sử dụng 2 Kết quả 3 Mã 4 Một cách tiếp cận khác. Cách sử dụngHãy bắt đầu với đối tượng JavaScript này mà chúng ta cần chuyển đổi sang XML vì một số lý do không thể giải thích được. Nó chứa các ví dụ về hầu hết các loại nội dung bạn cần tạo. Tất cả các giá trị sẽ được chuyển đổi thành các nút văn bản, không có thuộc tính var myObject = { "aString": "some string", "aNumber": 8, "aBoolean": false, "anObject": { "apis": [{ "name":"numbers", "url":"http://numbersapi.com/" }], }, "anArray": [ { "value": 8 , "result": "legs an arachnid has" }, { "value": 8 , "result": "furlongs in a mile" } ], "anotherArray":[1,2,3] }; Nó có thể được sử dụng như thế này var root = makeXmlFromOb (myObject , XmlService.createElement('root')); // make a documents var doc = XmlService.createDocument(root); // show it Logger.log (XmlService.getPrettyFormat().format(doc)); Kết quảĐiều này sử dụng phần tử thẻ để chỉ ra một thành viên của một mảng. Giải pháp thứ hai trên trang này có một cách tiếp cận khác (và tốt hơn) some string 8 false numbers http://numbersapi.com/ 8 legs an arachnid has 8 furlongs in a mile 1 2 3 Mật mãĐó là đệ quy, vì vậy cuối cùng nó chỉ là một vài dòng mã /** * convert json to xml * @param {object] ob an object to convert * @param {XmlElement} parent usually the root on first call * @return {XmlElement} the parent for chaining */ function makeXmlFromOb (ob, parent) { // this is recursive to deal with multi level JSON objects Object.keys(ob).forEach (function (d) { // if the key is numeric, xml will fail, so rename array indices to value var child = XmlService.createElement(isNaN(new Number(d)) ? d : 'element' ); // add new created element to the parent parent.addContent (child); // need to recurse if this is an object/array if (typeof ob[d] === 'object' ) { // the new parent is the newly created node return makeXmlFromOb (ob[d] , child ); } else { // regular node, set the text to the value child.setText(ob[d]); } }); return parent; } Một cách tiếp cận thay thếMảng là những thứ thú vị trong XML, vì chúng được xác định bằng cách lặp lại một thẻ, thay vì được gọi cụ thể là một mảng như trong JSON. Trong ví dụ trên, tôi đã chèn một thẻ mới để xác định các phần tử của một mảng. Vấn đề với phương pháp này là JSON không thể đảo ngược trở lại XML - vì các thẻ mới đã được chèn vào. Cách tiếp cận tốt hơn là sử dụng khóa Mảng làm thẻ được lặp lại Consider this object. var myObject = { "aString": "some string", "aNumber": 8, "aBoolean": false, "anObject": { "apis": [{ "name":"numbers", "url":"http://numbersapi.com/" },{ "name":"faa", "url":"http://services.faa.gov/airport/status" }], }, "anArray": [ { "value": 8 , "result": "legs an arachnid has" }, { "value": 8 , "result": "furlongs in a mile" } ], "anotherArray":[1,2,3] }; và kết quả sử dụng phương pháp sửa đổi some string 8 false numbers http://numbersapi.com/ faa http://services.faa.gov/airport/status 8 legs an arachnid has 8 furlongs in a mile 1 2 3 Điều này làm cho xml có thể được đảo ngược trở lại JSON và theo tôi là một giải pháp tốt hơn, ngoại trừ việc các mảng chỉ có 1 thành viên không thể phân biệt được dưới dạng mảng XML là một định dạng dữ liệu văn bản được tiêu chuẩn hóa và kết quả là nó được sử dụng rộng rãi trong nhiều hệ thống khác nhau. Hai cách sử dụng phổ biến là dành cho sơ đồ trang web và nguồn cấp dữ liệu RSS, cả hai đều có thể sử dụng XML làm định dạng tài liệu. Các cách sử dụng XML khác có thể bao gồm các điểm cuối API RESTful HTTP, cả nhận và trả về các yêu cầu và phản hồi XML. Bài đăng này sẽ bao gồm các bước để chuyển đổi JSON sang XML bằng gói XML npm. Đầu tiên chúng ta sẽ đọc một tệp JSON, chuyển đổi đối tượng JSON thành một chuỗi XML, sau đó ghi chuỗi XML vào một tệp. Bên cạnh việc đọc và ghi tệp, gói XML npm có thể được sử dụng trong các tình huống khác, trong đó không có tệp nào liên quan miễn là định dạng dữ liệu đến là JSON và định dạng đầu ra dữ liệu mong muốn là một chuỗi XML gói init npm. jsonBạn sẽ không cần phải làm điều này nếu bạn có một Nút hiện có. js nhưng nếu không, hãy đảm bảo cài đặt Node trước. js và npm. Sau đó, trong cửa sổ đầu cuối, hãy mở thư mục mới cho dự án và chạy lệnh npm init, đồng thời làm theo lời nhắc được hiển thị. Gói. tệp json nên được thêm vào thư mục dự án Chúng tôi cũng cần thực hiện một bổ sung cho gói. json sau khi được tạo để Mô-đun ES có thể được sử dụng với Node. js. Để hỗ trợ Mô-đun ES, hãy thêm thuộc tính "loại" vào gói. đối tượng tệp json với giá trị được đặt thành "mô-đun". Trong các bước sau, chúng tôi sẽ định cấu hình trình biên dịch TypeScript để xuất JavaScript bằng định dạng Mô-đun ES cài đặt npmvới gói. json được tạo, chúng tôi có thể chạy các lệnh bổ sung để cài đặt các gói npm mà chúng tôi sẽ sử dụng. Trong cùng một thư mục dự án chạy lệnh npm install xml Typescript --save, lệnh này sẽ cài đặt các gói npm XML và TypeScript. Sau đó chạy lệnh khác npm install @types/xml --save-dev. Thao tác này sẽ cài đặt các định nghĩa kiểu TypeScript cho gói XML npm. Gói của bạn. json sẽ trông giống như thế này
Biên dịch TypeScriptBây giờ chúng ta đã cài đặt các gói npm XML và TypeScript, chúng ta có thể định cấu hình TypeScript để biên dịch mã của chúng ta để sử dụng với Node. js, bằng cách thêm gói npm. tập lệnh json. Để thực hiện việc này, hãy thêm thuộc tính "tập lệnh" sau vào gói. json được tạo ở bước đầu tiên
Lệnh biên dịch sẽ gọi trình biên dịch TypeScript với các cờ CLI sẽ tạo đầu ra JavaScript bằng định dạng Mô-đun ES. Điều này sẽ khớp thuộc tính "loại" được đặt thành "mô-đun" trong gói. json đã cấu hình trước đó. Bạn có thể chạy lệnh này bằng npm run compile trong cửa sổ terminal Tạo nút. tập lệnh jsTiếp theo chúng ta có thể tạo một Node. js và như được tham chiếu trong gói. json lệnh "biên dịch", tên của tệp này là chỉ mục. ts. Ở đây chúng ta sẽ viết mã TypeScript sẽ sử dụng gói XML npm để tạo chuỗi XML từ một đối tượng JSON. trong chỉ mục. tệp ts thêm đoạn mã sau ________số 8Thao tác này sẽ thiết lập các câu lệnh nhập cho gói XML npm, đồng thời nhập các hàm readFile và writeFile từ mô-đun nút fs. Vì các chức năng này sử dụng các cuộc gọi lại theo mặc định, nên chức năng promisify được nhập từ mô-đun util để chuyển đổi các hàm readFile và writeFile thành các lời hứa. Bằng cách này, chúng ta có thể sử dụng cú pháp async/await Đọc tệp JSONTrong hàm ConvertJsonToXml, điều đầu tiên chúng ta có thể làm là đọc tệp JSON chứa đối tượng JSON mẫu mà chúng ta có thể chuyển đổi thành chuỗi XML. Tạo một tệp mới có tên là "dữ liệu. json" trong cùng một thư mục dự án và thêm đối tượng JSON mẫu này
trong chỉ mục. js, bên trong hàm ConvertJsonToXml, chúng ta có thể thêm mã này để đọc tệp JSON và phân tích cú pháp thành một đối tượng JSON với chữ ký loại tương ứng var root = makeXmlFromOb (myObject , XmlService.createElement('root')); // make a documents var doc = XmlService.createDocument(root); // show it Logger.log (XmlService.getPrettyFormat().format(doc));0 Khi tệp json được đọc và lưu dưới dạng biến "staticSiteGeneratorData", chúng ta có thể sử dụng Array. nguyên mẫu. map() để định hình dữ liệu thành định dạng chúng ta cần, để sử dụng gói npm XML để chuyển đổi đối tượng JSON thành chuỗi XML. Bên dưới đoạn mã đang đọc dữ liệu. tệp json thêm mã này var root = makeXmlFromOb (myObject , XmlService.createElement('root')); // make a documents var doc = XmlService.createDocument(root); // show it Logger.log (XmlService.getPrettyFormat().format(doc));1 Kết quả của dữ liệu được gán cho biến "xmlFormattedStaticSiteGeneratorData" sẽ như thế này var root = makeXmlFromOb (myObject , XmlService.createElement('root')); // make a documents var doc = XmlService.createDocument(root); // show it Logger.log (XmlService.getPrettyFormat().format(doc));2 Chuyển đổi tệp JSON thành chuỗi XMLDữ liệu JSON được gán cho biến "xmlFormattedStaticSiteGeneratorData" hiện ở định dạng phù hợp để sử dụng với gói XML npm. Ngay bên dưới mã định dạng dữ liệu và bên trong hàm "convertJsonToXml", hãy thêm mã sau var root = makeXmlFromOb (myObject , XmlService.createElement('root')); // make a documents var doc = XmlService.createDocument(root); // show it Logger.log (XmlService.getPrettyFormat().format(doc));3 Định dạng của chuỗi xml được gán cho "staticSiteGeneratorXmlString" sẽ giống như thế này var root = makeXmlFromOb (myObject , XmlService.createElement('root')); // make a documents var doc = XmlService.createDocument(root); // show it Logger.log (XmlService.getPrettyFormat().format(doc));4 Viết tệp XMLChuỗi XML được gán cho biến "staticSiteGeneratorDataXmlString" có thể được ghi vào tệp XML bằng mô-đun writeFile mà chúng tôi đã nhập và quảng cáo ở đầu chỉ mục. tập tin ts. Để ghi chuỗi XML vào một tệp trong cùng thư mục dự án, hãy thêm mã này bên dưới cách sử dụng gói npm XML đã được bao gồm trong bước trước var root = makeXmlFromOb (myObject , XmlService.createElement('root')); // make a documents var doc = XmlService.createDocument(root); // show it Logger.log (XmlService.getPrettyFormat().format(doc));5 Đặt tất cả các mã lại với nhau và chỉ mục. tệp ts sẽ trông như thế này 0Chạy nút. js Script với gói npm. Tập lệnh jsonĐể kiểm tra mã này và chạy Node. js, chúng ta có thể thêm một gói khác. json đầu tiên sẽ biên dịch TypeScript thành JavaScript và sau đó chạy đầu ra JavaScript với Node. js. Trong gói. tệp json thêm một gói mới. json có tên "bắt đầu" giống như thế này 1Để sử dụng tập lệnh bắt đầu, hãy chạy lệnh npm run start và sau đó bạn sẽ thấy tệp XML được tạo và lưu vào thư mục dự án. Nội dung của tệp này phải khớp với định dạng của chuỗi XML được hiển thị trước đó. Bất cứ khi nào bạn muốn thay đổi dữ liệu hoặc định dạng, hãy đảm bảo chạy lại npm run start để tạo lại dữ liệu. tập tin xml Gói XML npm là một cách thuận tiện để chuyển đổi JSON thành XML, miễn là dữ liệu JSON được định dạng phù hợp hoặc có một bước liên quan để định dạng đúng nguồn dữ liệu JSON ban đầu thành định dạng mà gói XML npm yêu cầu. Đối với các cách sử dụng khác của gói XML npm, bạn có thể đọc các bài đăng khác của tôi cho biết cách tạo sơ đồ trang web XML và tạo nguồn cấp RSS XML, như ví dụ này, cả hai bài đăng này đều đang sử dụng Node. js và npm Làm cách nào để chuyển đổi JSON sang XML nodejs?sử dụng chức năng chuyển đổi JSON sang XML. const Helper = require('. /your-class-path/Helper') const jsonObj = { "key". 'đối tượng json của bạn' }; . jsonToXml(jsonObj); Vì vậy, sử dụng kỹ thuật đơn giản này, bạn có thể đạt được mục tiêu của mình.
Làm cách nào để phân tích cú pháp JSON thành XML?Trình chuyển đổi JSON sang XML . Chọn tác vụ JSON to XML từ menu Công cụ > Công cụ JSON. . Chọn hoặc nhập URL đầu vào của tài liệu JSON Chọn đường dẫn của Tệp đầu ra sẽ chứa tài liệu XML kết quả Chọn tùy chọn Mở trong Trình chỉnh sửa để mở tài liệu XML kết quả trong ngăn chỉnh sửa chính Làm cách nào để chuyển đổi đối tượng JSON thành XML bằng JavaScript?Cài đặt xml-js
. Sau khi cài đặt, chúng tôi sẽ có thể nhập nó vào một mô-đun JavaScript, như thế này. nhập { json2xml } từ 'xml-js'; .
Làm cách nào để chuyển đổi đối tượng JSON thành chuỗi trong nút JS?Sử dụng hàm JavaScript JSON. stringify() để chuyển nó thành chuỗi . const myJSON = JSON. xâu chuỗi (obj); . |