2016-08-08 27 views
1

Ich konnte alle Beispiele von DART-Xml folgen, aber das ist nur für eine Dart-Datei mit XML in einer Variablen. Wie kann ich externe XML-Dateien analysieren und erstellen?Dart Xml mit externen Dateien

Wenn ich versuche, eine XML-Datei direkt zu importieren, wird Dart normalerweise auf dem ersten Zeichen der XML-Datei '<' hängen bleiben.

Wie würde ich das gegebene Beispiel von dart-xml https://github.com/renggli/dart-xml schreiben? Ich kann es in die Shell mit

print(bookshelfXml.toString()); 

, aber wie ich speichern || Pipe es in eine externe Datei? Ich habe versucht, dart: io ein wenig, aber im Moment keinen Erfolg zu haben.

+0

Wird der Code im Browser oder auf dem Server ausgeführt? –

+0

Hallo Zochi, Im Moment arbeite ich nur an dart: io, um XML-Dateien zu bedienen. Allerdings würde ich gerne Xml und Xslt-Dateien für Polymer-Elemente verfügbar haben. – lubi

Antwort

1

Dies sollte das tun, was Sie wollen:

import 'dart:io'; 

... 

var file = new File('path/to/file.xml'); 
file.writeAsString(bookshelfXml.toString()); 

Siehe auch:

+1

danke. das funktioniert gut. Ich habe gerade den kleinen Tippfehler 'var file = new File (' pathToFile.xml '); file.writeAsString (bookshelfXml.toString()); ' – lubi

+0

Wie analysiere ich ein externes Dokument? Wenn ich es als String einlese, ist die 'xml.parse (importedFile.xml);' gibt nur Fehler zurück. – lubi

+0

Was ist 'importierteFiles.xml'? Welche Fehler? –

1

Dank Renggli @ Github, Zoeichi für Dart: io Hilfe.

Um die Beispiele aus der dart-xml Repo mit externen Dateien zu versuchen versuchen;

import 'dart:io'; 
import 'package:xml/xml.dart' as xml; 

void main(){ 

//create file bookshelf.xml seperately using example on github. 
// <?xml version="1.0"?> 
//  <bookshelf> 
//  <book> 
//   <title lang="english">Growing a Language</title> 
//   <price>29.99</price> 
//  </book> 
//  <book> 
//   <title lang="english">Learning XML</title> 
//   <price>39.95</price> 
//  </book> 
//  <price>132.00</price> 
//  </bookshelf> 

//parse external file 
var book = xml.parse(new File('bookshelf.xml').readAsStringSync()); 
print(book.toString()); 
print('---'); 

//finding elements 
var titles = book.findAllElements('title'); 
titles 
    .map((node) => node.text) 
    .forEach(print); 

//finding elements, convert strings to compute sum 
var total = book.findAllElements('book') 
    .map((node) => double.parse(node.findElements('price').single.text)) 
    .reduce((a, b) => a + b); 
print(total); 
print('---'); 

//build external file using example 
var builder = new xml.XmlBuilder(); 
builder.processing('xml', 'version="1.0"'); 
builder.element('bookshelf', nest:() { 
    builder.element('book', nest:() { 
    builder.element('title', nest:() { 
     builder.attribute('lang', 'english'); 
     builder.text('Growing a Language'); 
    }); 
    builder.element('price', nest: 29.99); 
    }); 
    builder.element('book', nest:() { 
    builder.element('title', nest:() { 
     builder.attribute('lang', 'english'); 
     builder.text('Learning XML'); 
    }); 
    builder.element('price', nest: 39.95); 
    }); 
    builder.element('price', nest: 132.00); 
}); 
var bookshelfXml = builder.build(); 

//create and write eternal file name and contents 
var buildXml = new File('bookshelfDartCreated.xml'); 
buildXml.writeAsString(bookshelfXml.toString()); 

//check newly created file 
new File('bookshelfDartCreated.xml').readAsString().then((String contents) { 
    print(contents); 
    }); 
}