QXmlQuery 및 QT-XSLT를 사용하여 Itunes Libray 파일을 구문 분석하는 클래스를 작성하고 있습니다. 데이터를 포함하지 않습니다 여기QXmlQuery 및 XSLT20 : 결과 출력 문자열이 매 시간마다 비어 있으며 셸 (xmlpattern)에서 제대로 작동합니다.
ItunesLibParser::ItunesLibParser()
{
pathToLib = QString("/Users/rakesh/temp/itunes_xslt/itunes_music_library.xml");
}
void ItunesLibParser::createXSLFile(QFile &inFile)
{
if (inFile.exists()) {
inFile.remove();
}
inFile.open(QIODevice::WriteOnly);
QTextStream out(&inFile);
out << QString("<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>");
out << QString("<xsl:stylesheet version=\"2.0\" xmlns:xsl=\"http://www.w3.org/1999/XSL/Transform\">");
out << QString("<xsl:output method=\"text\" />");
out << QString("<xsl:template name=\"playlistNames\">");
out << QString("<xsl:value-of select=\"child::integer[preceding-sibling::key[1]='Playlist ID']\"/>");
out << QString("<xsl:text>
</xsl:text>");
out << QString("<xsl:value-of select=\"child::string[preceding-sibling::key[1]='Name']\"/>");
out << QString("<xsl:text>
</xsl:text>");
out << QString("</xsl:template>");
out << QString("<xsl:template match=\"/\">");
out << QString("<xsl:for-each select=\"plist/dict/array/dict\">");
out << QString("<xsl:call-template name=\"playlistNames\"/>");
out << QString("</xsl:for-each>");
out << QString("</xsl:template>");
out << QString("</xsl:stylesheet>");
inFile.close();
return;
}
void ItunesLibParser::dumpPlayList()
{
QXmlQuery query(QXmlQuery::XSLT20);
query.setFocus(QUrl(pathToLib));
QFile xslFile("plist.xsl");
createXSLFile(xslFile);
query.setQuery(QUrl("plist.xsl"));
QStringList* outDump = new QStringList();
query.evaluateTo(outDump);
if(outDump != NULL) {
QStringList::iterator iter = (*outDump).begin();
for (; iter != (*outDump).end();
++iter)
//code flow doesn't come here. It means being() == end()
std::cout << (*iter).toLocal8Bit().constData() << std::endl;
}
return;
}
OutDump :
여기 내 예제 코드입니다. Shell (xmlpatterns-4.7 mystlye.xsl itunes_music_library.xml)에서 쿼리를 실행하면 올바른 결과를 얻습니다.
프로그래밍 방식으로 호출하는 동안 문제가 있습니까? plist.xsl이 제대로 생성되었는지 확인했지만 의심 스럽지만 "/Users/rakesh/temp/itunes_xslt/itunes_music_library.xml"이로드되고 있는지 여부는 의심 스럽습니다. 아니면 또 다른 이유가있을 수 있습니다, 나는 혼란스러워합니다. 약간의 빛을 문제에 던질 전문가가 있습니까? 기쁠 것입니다.