use of com.xenoage.utils.xml.XmlException in project Zong by Xenoage.
the class FileTypeReader method getFileType.
@MaybeNull
public static FileType getFileType(InputStream inputStream) throws IOException {
// create buffered stream for reuse
BufferedInputStream bis = new BufferedInputStream(inputStream);
bis.mark();
// read first two characters. if "PK", we have a compressed MusicXML file.
int[] bytes = new int[] { bis.read(), bis.read() };
if (// P, K
bytes[0] == 80 && bytes[1] == 75) {
return FileType.Compressed;
}
bis.reset();
bis.unmark();
// otherwise, try to parse as XML up to the root element (using StAX)
try {
XmlReader reader = platformUtils().createXmlReader(bis);
if (reader.openNextChildElement()) {
String n = reader.getElementName();
switch(n) {
case "score-partwise":
return FileType.XMLScorePartwise;
case "score-timewise":
return FileType.XMLScoreTimewise;
case "opus":
return FileType.XMLOpus;
}
reader.closeElement();
}
} catch (XmlException ex) {
// unknown (no XML)
return null;
}
// unknown
return null;
}
use of com.xenoage.utils.xml.XmlException in project Zong by Xenoage.
the class MusicXMLDemoFilesTest method test.
private void test(boolean reload) throws Exception {
long totalMusicXMLReadingTime = 0;
long lastTime = 0;
for (String dir : dirs) {
for (File file : JseFileUtils.listFiles(new File(dir), plainMusicXMLFilenameFilter, false)) {
System.out.println(file);
lastTime = System.currentTimeMillis();
XmlReader reader = new JseXmlReader(new FileInputStream(file));
try {
lastTime = System.currentTimeMillis();
// load the document
MusicXMLDocument doc = MusicXMLDocument.read(reader);
if (reload) {
// write the document into memory
ByteArrayOutputStream bos = new ByteArrayOutputStream();
doc.write(new JseXmlWriter(bos));
bos.close();
// reload it from memory
ByteArrayInputStream in = new ByteArrayInputStream(bos.toByteArray());
MusicXMLDocument.read(new JseXmlReader(in));
in.close();
// doc.write(new JseXmlWriter(new JseOutputStream(new File("test.xml"))));
}
totalMusicXMLReadingTime += (System.currentTimeMillis() - lastTime);
} catch (XmlException ex) {
throw new Exception("Failed for " + dir + "/" + file.getName() + ": " + ex.getMessage(), ex);
}
}
}
// print time
System.out.println("Total time for read" + (reload ? "/write/read: " : ": ") + totalMusicXMLReadingTime + " ms");
}
use of com.xenoage.utils.xml.XmlException in project Zong by Xenoage.
the class AndroidXmlReader method closeElement.
@Override
public void closeElement() {
if (cancelNextClose) {
cancelNextClose = false;
return;
}
try {
int openChildren = 1;
int event = reader.getEventType();
while (event != XmlPullParser.END_DOCUMENT) {
event = reader.next();
if (event == XmlPullParser.START_TAG) {
openChildren++;
} else if (event == XmlPullParser.END_TAG) {
openChildren--;
if (openChildren == 0)
return;
}
}
} catch (Exception ex) {
throw new XmlException(ex);
}
}
Aggregations