Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save luismendes070/9159064d4e6ccc6b9bb2c3ceacde2b95 to your computer and use it in GitHub Desktop.
Save luismendes070/9159064d4e6ccc6b9bb2c3ceacde2b95 to your computer and use it in GitHub Desktop.
TypesScript programming language XML file reader XML file writer feature #ChatGPT
import * as fs from 'fs';
import * as xml2js from 'xml2js';
// Read the XML file
const xml = fs.readFileSync('file.xml', 'utf-8');
// Convert the XML to a JavaScript object
xml2js.parseString(xml, (err, result) => {
if (err) {
console.error(err);
return;
}
// Do something with the result object
console.log(result);
});
@luismendes070
Copy link
Author

import { Injectable } from '@angular/core';
import { HttpClient } from '@angular/common/http';
import { Book } from './book';

@Injectable({
  providedIn: 'root'
})
export class BookService {

  private xmlUrl = 'assets/books.xml';

  constructor(private http: HttpClient) { }

  getBooks(): Promise<Book[]> {
    return this.http.get(this.xmlUrl, { responseType: 'text' })
      .toPromise()
      .then(xml => {
        const parser = new DOMParser();
        const xmlDoc = parser.parseFromString(xml, 'text/xml');
        const books = Array.from(xmlDoc.getElementsByTagName('book'))
          .map(bookNode => ({
            title: bookNode.getElementsByTagName('title')[0].textContent,
            author: bookNode.getElementsByTagName('author')[0].textContent,
            year: parseInt(bookNode.getElementsByTagName('year')[0].textContent, 10)
          }));
        return books;
      });
  }

  addBook(book: Book): Promise<void> {
    // TODO: Implement add book logic
    return Promise.resolve();
  }

  updateBook(book: Book): Promise<void> {
    // TODO: Implement update book logic
    return Promise.resolve();
  }

  deleteBook(title: string): Promise<void> {
    // TODO: Implement delete book logic
    return Promise.resolve();
  }
}

@luismendes070
Copy link
Author

import { Component, OnInit } from '@angular/core';
import { Book } from '../book';
import { BookService } from '../book.service';

@Component({
  selector: 'app-book-list',
  templateUrl: './book-list.component.html',
  styleUrls: ['./book-list.component.css']
})
export class BookListComponent implements OnInit {

  books: Book[];

  constructor(private bookService: BookService) { }

  ngOnInit() {
    this.bookService.getBooks()
      .then(books => this.books = books);
  }

  addBook() {
    // TODO: Implement add book logic
  }

  updateBook(book: Book) {
    // TODO: Implement update book logic
  }

  deleteBook(title: string) {
    // TODO: Implement delete book logic
  }

}

@luismendes070
Copy link
Author

<h2>Books</h2>
<ul>
  <li *ngFor="let book of books">
    {{ book.title }} by {{ book.author }} ({{ book.year }})
  </li>
</ul>

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment