Article View: cn.bbs.comp.xml
Article #231���� Zoho Reports �� XML ̽���Ʒ���(ת��)
From: <Test/>
Date: Wed, 26 May 2010 14:42
Date: Wed, 26 May 2010 14:42
454 lines
25848 bytes
25848 bytes
Ryan Knight, �������ƹ���, ����ְҵ��
��飺 �Ʒ������?����Ա��Ӵ�ͳҵ�����ܽ�������ĺܶ����ԣ������κο���
̽�����ʹ�� Zoho Reports��Zoho API �� XML �������Ʒ������������Ӷ�����
��Ӧ�ó����������еģ����DZ��صģ���ӷ������ܡ�
�Ʒ����ṩһ��ҵ������ (BI) �������棬���谲װ��ά����ͳ��������ʱ����Ŀ�
��ͳɱ�������Ҳ�ܱ���㷺����������ʣ���Ϊ������ά�����Dz���Ҫר�ż��ܡ���
��ͳ�ı������治ͬ�������Ʒ�������ݿ���פ���ڱ�����������ĺܶ�λ���С�
�������
API��Ӧ�ó����̽ӿ�
HTML�����ı��������
HTTP�����ı�����Э��
JDOM��Java �ĵ�����ģ��
PDF����Яʽ�ĵ���ʽ
RSS�����������
SQL���ṹ����ѯ����
XML������չ�������
URI��ͳһ��Դ��ʶ��
URL��ͳһ��Դ��λ��
��ô���Ʒ�������Ҫ��ս����Ҫ��֤����ܹ���Ч�ش��䵽���������С��ܶ��Ʒ���ƽ
̨����ӵ��ӱ��ŷָ�ֵ (CSV) �ļ�������ݡ�����Ҳͨ�� Web �����ṩһ
����̽ӿڡ�
Zoho® Reports��һ��ʾ��Ӧ�ó�����ͳ��Ӧ�ó������Ʒ�����м��ɣ�����
�����ṩ�������μ� �ο����ϣ��������е�����չʾ�˴�ͳӦ�ó�����ν� Zoho
Reports ������ݴ洢�ͼ����Լ�����Ŀ�ģ������Խ������ͼ��Ƕ���� Web ҳ��
�С�
Zoho Reports �ṩһ��������ݿ⣨���ڴ洢��ݣ���һ�� REST-ful API����
��������ݵĽ�������REST-���ļܹ�������Ľ����������Ϊ������ͨ�� HTTP
���м���Ϣ���ݡ����ü� HTTP ��Ϣ��������������ͨ�ţ����������Է�
�� XML ��ʽ����ݡ�
�˽� Zoho Reports
Zoho Reports ��һ�����߱��湤�ߣ���Ϊҵ������ṩһ�������Ľ�����������
����Ϥ����ݿⷽʽ�洢����֯Ϊ�����ʽ�����ڶ�����ݽṹ�Ľӿ��ǵ��ӱ������
�ݿ�Ļ�ϡ���Ҳ����ͨ�����ص��ļ��ṹ�����Ľṹ��
�����úܶʽ��������� Zoho Reports �У������������� CSV��Microsoft®
Office Excel® (XLS) �� HTML �ȸ�ʽ���أ��ڵ��ӱ��֮��Ľ������ֹ���
�룻����ͨ��ʹ�� Reports API ���롣���ڱ��湦�ܣ�Zoho Reports �ṩ����
��ͳ����Ӧ�ó����п����ҵ�����Щ��� �� ͼ�?��ͼ�����ݱ����ͼ��������
ͨ���ϷŽ��������ݵĿ��ӷ�����Ҳ����ʹ����Ϥ�� SQL ��ݿ����Բ�ѯ��ݡ�
�� Zoho Reports �ж��屨��֮���Խ�����Ƕ���� Internet �ϵ��κεط���
���粩�͡�����Ӧ�ó�������� Web վ�㡣����Ϳ��������ڲ�ͬ��λ��ʹ����
ͬ�ı��档
��ҳ��
ʹ�� Zoho API
Zoho API Ϊͨ�� HTTP ����ݿ��е���ݽ����ṩһ�� REST-���Ľӿڡ���
API �ĵ��ð�����ݿ����Ҫʹ�õı?�� API �Ĺ��ܰ�����
��ӻ�����ݡ�
ʹ�� CSV �ļ�������ӻ������ݡ�
����ָ���������������»�ɾ����ݡ�
������ PDF��HTML��CSV��JavaScript Object Notation (JSON) ��ͼ��֮��
�ĸ�ʽ������ݺͱ��档
ʹ�� SQL SELECT ��ѯ����ݿ�ȡ����ݡ�
Ҫʹ�ø� API���������ȴ� http://writer.zoho.com/apikey.htm ����һ����
Կ������ API ���ö�Ҫ���ݴ���Կ��
ÿ�� Zoho Reports ����ĵڶ�����Ҫ������ ticket �����Ʊ�ݣ�ticket��
�������״ε�¼ʱ��ɵġ����Ʊ��Ȼ���������к��� API ���á�
�����ʽʹ��һ�� HTTP POST �����ʽ�����ڲ�����ָ��Ҫ��ȡ�Ķ������Լ� API
��Կ��Ʊ�ݡ�API �汾�������ʽ�������������������д��ݡ�Zoho wiki ������
���ʽ����ϸ��Ϣ���μ� �ο����ϣ���
������ָ������Ӧ��ʽ������ XML �� JSON��XML ��ʽָ��һ�� <response> ��
�ǣ�����Ƕ����һ�� <result> ��ǡ�<response> ���ָ�����õ� URI �Ͳ�ȡ
������
<?xml version="1.0" encoding="UTF-8" ?>
<response uri="/api/loginname/databasename/tablename"
action="specifiedaction">
<result>
<!-- The specific XML response based on the action goes here --
>
</result>
</response>
Ϊ�˴ٽ��� Zoho API �Ľ�����Zoho Reports �ṩһ���� Java™ ���Ժ�
Python ���Ա�д�Ŀͻ��˿⣻���⣬Google App Engine �ͻ��˱���Ϊ Python
���һ����չ�ṩ�������е�����ʹ�� Java ���Կ⣬�ÿ�Ϊ�� Zoho Reports ��
�����ṩһ���൱�Ľӿڡ�
ʹ�õ������� ReportClient�������� Zoho Reports ���������ͻ��ˡ���ʼ��
��¼���ͻ��ˣ�Ȼ���ý������������������ URI��
ReportClient reportClient =
ZohoConfig.getReportClient();
reportClient.login(ZohoConfig.LOGINNAME,
ZohoConfig.PASSWORD);
String uri = reportClient.getURI(ZohoConfig.LOGINNAME,
ZohoConfig.DATABASENAME, "WordFrequency");
�˴����¼�� ZohoConfig ��ָ������ݿ⣬�� BlogAnalyzer��Ȼ��ָ���˽�Ҫ
ʹ�õı� �� �������� WordFrequency��
�����걨��ͻ���֮��ʹ�����µ����˳��ͻ��ˣ�
reportClient.logout();
��ҳ��
���� Zoho Reports ���� RSS ��Ҫ
��Ϊһ�������ӣ������������ܶ� RSS ��Ҫ���ҳ�ÿ�����ʳ��ֵ�Ƶ�ʡ�����
RSS ��ʹ�� XML ָ���ģ����Ժ������� Java �����ж�ȡ�ͽ��� RSS��ʾ��Ӧ�ó�
��ʹ�� Rome���μ� �ο����ϣ���һ�����ڽ�������ɺͷ��� RSS ��Ҫ�� Java
�⡣Rome ʹ�� JDOM XML ��������֧����Ҫ�������Լ�����ת����ͬ��ʽ����Ҫ��
���� Rome ��ȡ RSS ��Ҫ��Ϊ�����Ҫ��ȡ�� RSS ��Ҫ�� URL������һ��
XMLReader��Ȼ���ȡ��Ҫ��
URL feedUrl = new URL(url);
XmlReader xmlReader = new XmlReader(feedUrl);
SyndFeedInput input = new SyndFeedInput();
SyndFeed feed = input.build(xmlReader);
�ô��뽫һϵ����Ŀ�洢�� feed �����С�Ȼ������Ե��ͨ����Щ��Ŀ������Ŀ��
������һϵ�е��ʣ��� �嵥 1 ��ʾ��
�嵥 1. ���ͨ�������Ŀ
List entriesList = feed.getEntries();
for (Object obj : entriesList) {
SyndEntryImpl syndEntry = (SyndEntryImpl) obj;
String title = syndEntry.getTitle();
parseWordsFromString(title);
SyndContent description =
syndEntry.getDescription();
parseWordsFromString(description.getValue());
}
parseWordsFromString() �������µ���ӳ�䣬����ͳ����ÿ�����ʵ�Ƶ�ʡ�����
��ȡ�õ�ÿ����Ҫ��������Ŀ֮��ѭ��ͨ����Կ�����鿴ÿ�����ʵ�Ƶ�ʡ����磬��
�� and ������ 1015 ��Apple ���� 45 ��Adobe ��������
���ַ��������
�嵥 2 ����ʾ���ڴ��ַ�������ʵķ����Ǵ� Java2s Web վ���ϵ���ͬ������
�Ķ����ģ��μ� �ο����ϣ���
�嵥 2. ���ַ��������
public void parseWordsFromString(String nxtString) throws
CharacterCodingException {
// Create line pattern
Pattern linePattern = Pattern.compile(".*$",
Pattern.MULTILINE);
// Create word pattern
Pattern wordBreakPattern =
Pattern.compile("[\\p{Punct}\\s}]");
// Match line pattern to buffer
Matcher lineMatcher = linePattern.matcher(nxtString);
Integer ONE = new Integer(1);
// For each line
while (lineMatcher.find()) {
// Get line
CharSequence line = lineMatcher.group();
// Get array of words on line
String words[] = wordBreakPattern.split(line);
// For each word
for (int i = 0, n = words.length; i < n; i++) {
String nxtWord = words[i].trim();
if (nxtWord.matches("[a-zA-Z]{2,}?")) {
nxtWord = nxtWord.toLowerCase();
Integer frequency = (Integer)
map.get(nxtWord);
if (frequency == null) {
frequency = ONE;
} else {
int value = frequency.intValue();
frequency = new Integer(value + 1);
}
map.put(nxtWord, frequency);
}
}
}
}
Java2s ���� parseWordsFromString ʹ�� Java ������ʽ�������ַ���
�ȣ���һ��������ʽģʽ���ڲ��Ҿ���ĩβ����Ϊÿ�����ʴ���һ�� ONE ��
��������ͳ�Ƶ��ʵij���Ƶ�ʡ�Ȼ��ѭ��ͨ��ÿ�����ӣ������ڵ��ʷָ�ģʽ�����ӷ�
��ɵ��ʡ�����ÿ���������ַ�ĵ��ʣ���ͳ����洢��Ƶ��ӳ���С�
�������� RSS ��Ҫ��ÿ�����ʵ�Ƶ�ʣ��Ϳ��Խ���������ص� Zoho Reports ����
�����ˡ�Ϊ�ˣ�����һ���� �嵥 3 ����ʾ��ɢ��ӳ�䣬���а�����Ҫ�洢�ڱ��е�
����ݡ�
�嵥 3. ����һ������Ҫ����������ݵ�ɢ��ӳ��
SimpleDateFormat dtFmt = new
SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
Set wordSet = map.keySet();
for (Object objs : wordSet) {
String nxtWord = (String) objs;
Integer frequency = (Integer) map.get(nxtWord);
HashMap rowValsMap = new HashMap();
rowValsMap.put("Date", dtFmt.format(new Date()));
rowValsMap.put("Word", nxtWord);
rowValsMap.put("Frequency", frequency);
Map result = reportClient.addRow(uri, rowValsMap,
null);;
}
ѭ���е����һ�����ã����ñ���ͻ��ˣ�����������ֵ��ӵ����С���¼�� Zoho
Reports �鿴 WordFrequency ���е���ݣ��� ͼ 1 ��ʾ�����鿴 ��ͼ����
ͼ 1. Zoho Reports �е� WordFrequency ��
Ϊ���øñ��������ã�Ӧ�ý�һ�����������б?����˵�����˵����� http �� com
֮��ij���ʡ�
��ҳ��
�Ż����ع��
ǰһ������ÿ������һ����� �� ��Ȼ������ѵķ����������������Ҫ���϶��ʱ��
������ݡ���õķ�����ʹ������������һ���������е���ݡ�Ŀǰ��Zoho API ֻ��
��ѡ�������� CSV �ļ���
CSV �ļ��ĸ�ʽ�ܼ���һ�а��б����б?������а���ݡ����� CSV �ļ�
ʱ��������� POST ����ָ�����ӵ����ز�������ܶ�����������ݵ�ѡ�����
�����±?�ӵ����еı?���߸��±��е�����ֵ������ѡ�����ϸ��Ϣ�� Zoho
wiki �У��μ� �ο����ϣ���
Ҫ�Ż� RSS ���ʷ������ɸ�����ع����ʹ�� Zoho API import ����������
��ݵ��÷���һ�� XML �ĵ�����ϸ��¼�����صĽ�� �� ���ص����������������
��Ϣ����Ҳ����һ����������б?����˵һ��ֵ��������ijһ�в���
Ҫʹ�� import ��������������ʹ�� opencsv���μ� �ο����ϣ�����ݼ�ת����
CSV �ļ���Ҫ����ļ�����ѭ��ͨ���ӳ���е�ֵ����ÿ��ֵд���ļ��е�һ�У���
�� �嵥 4����
�嵥 4. ���� CSV �ļ���������
Calendar today = GregorianCalendar.getInstance();
SimpleDateFormat formatter = new
SimpleDateFormat("dd.MM.yy.H.mm.ss");
String dateStr = formatter.format(today.getTime());
String csvFileName = "benchmark-results" + dateStr +
".csv";
CSVWriter writer = new CSVWriter(new
FileWriter(csvFileName));
String[] columns = new
String[]{"Date","Word","Frequency"};
writer.writeNext(columns);
SimpleDateFormat dtFmt = new
SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
String crntDateStr = dtFmt.format(new Date());
Set wordSet = map.keySet();
for (Object objs : wordSet) {
String nxtWord = (String) objs;
Integer frequency = (Integer) map.get(nxtWord);
String[] values = new String[]{crntDateStr, nxtWord,
frequency.toString()};
writer.writeNext(values);
}
writer.close();
���� CSV �ļ�֮��ֻҪ�� ReportClient �Ͻ��ļ�����Ϊ����ݸ�
importData() �������ɡ��÷����������ص� XML �ĵ��������õ������ϸ�����
�� ImportResult �࣬�� �嵥 5 ��ʾ��
�嵥 5. �Ż� RSS ���ʷ�����������
ReportClient reportClient = ZohoConfig.getReportClient();
System.out.println(" Logging into the server");
reportClient.login(ZohoConfig.LOGINNAME,
ZohoConfig.PASSWORD);
System.out.println(" Successfully logged in.");
String uri = reportClient.getURI(ZohoConfig.LOGINNAME,
ZohoConfig.DATABASENAME, "WordFrequency");
System.out.println("uri = " + uri);
ImportResult importResult =
reportClient.importData(uri,"APPEND",new
File(csvFileName),getImportConfig(),
false);
System.out.println("imported " +
importResult.getTotalRowCount() +
" rows");
reportClient.logout();
��ĵ�������ʹ���������صij�Ч������� 6000 ����ݵ����ع�̣�ʱ��Ӽ�
�������̵������ӡ�
��ҳ��
�� Zoho Reports ���� XML
����ʹ�����ַ���֮һ�� Zoho Reports ������ݵ� XML��CSV ��ͼ���ʽ���ļ�
�С���һ�ַ��������ÿ�ѡ�ı�������ָ��ֱ�ӵ������ڶ��ַ�����ʹ��ij��������
SQL SELECT ��������
ֱ�ӵ����� URI ��ָ�������ı?�������ֱ�ӱ��浽�ļ�����������嵥 6 �ṩ
һ�����ӣ�ʹ����������ֱ�ӵ����� XML �ļ������ڱ�����˵����ֻ�뿴��ͳ��Ƶ��
���� 400 �ĵ��ʡ�
�嵥 6. �� Zoho Reports ������ XML �ļ�
String exportUri =
reportClient.getURI(ZohoConfig.LOGINNAME,
ZohoConfig.DATABASENAME, "WordFrequency");
File topXmlFile = new File("topFrequencyWords.xml");
String xmlCriteria = "(\"Frequency\" > 400)";
reportClient.exportData(exportUri, "XML",
topXmlFile, xmlCriteria, null);
�ڱ����У���ָ���Լ�ֻ��Ҫ����Ƶ��ֵ���� 400 ����ݡ����ֱ�ӱ��浽
topFrequencyWords.xml �ļ����嵥 7 �ṩ�˴� XML �ļ���һ��Ƭ�Ρ�
�嵥 7. ժ�� topFrequencyWords.xml
<?xml version="1.0" encoding="UTF-8" ?>
<response uri="/api/flexanvil/BlogAnalyzer/WordFrequency"
action="EXPORT">
<criteria>("Frequency" > 400)</criteria>
<result>
<rows>
<row>
<column name="Word">http</column>
<column name="Frequency">2687</column>
<column name="Date">19 May, 2009 16:43:26</column>
</row>
<row>
<column name="Word">com</column>
<column name="Frequency">2587</column>
<column name="Date">19 May, 2009 16:39:05</column>
</row>
�ڵڶ��������У�ʹ�� SQL ��ָ����Ҫ��������ݡ����ڱ�����˵��ʹ��һЩ���
SQL ������������ݡ������Ҫ����Ƶ��ֵ��ƽ��ֵ��ͳ�������ֵ�ͱ�ֵ������
ʹ�������� �嵥 8 �еĴ��롣
�嵥 8. ��� Zoho Reports ���� SQL ��ѯ
String sqlUri = reportClient.getURI(ZohoConfig.LOGINNAME,
ZohoConfig.DATABASENAME);
System.out.println("sqlUri = " + sqlUri);
String sql = "SELECT avg(\"Frequency\") as Average,
count(\"Frequency\") as Count,
max(\"Frequency\") as Maximum, " +
"std(\"Frequency\") as Standard FROM
\"WordFrequency\"";
File xmlFile = new File("frequencyData.xml");
reportClient.exportDataUsingSQL(sqlUri, "XML", xmlFile,
sql, null);
����ָ�� SQL �ַ������ڵ�����ݡ�SQL ���������ݿ�ִ�У����洢�� XML
�ļ� frequencyData.xml �У��� �嵥 9 ��ʾ��
�嵥 9. ժ�� frequencyData.xml
<?xml version="1.0" encoding="UTF-8" ?>
<response uri="/api/flexanvil/BlogAnalyzer" action="EXPORT">
<result>
<rows>
<row>
<column name="Average">11.796</column>
<column name="Count">5834</column>
<column name="Maximum">2687</column>
<column name="Standard">78.0844</column>
</row>
</rows>
</result>
</response>
������ݵ� SQL �����ؼ��������ڣ�URI û��ָ��ʹ���ĸ��?������ SQL ����
��϶�������ݡ����磬�������һ�������ı?�����г�����Ҫ�ٵĹ�˾��Ȼ��
�����ʹ��һ�� SQL inner join ������õ��б���ÿ����˾���ᵽ��Ƶ�ʣ��� ��
�� 10 ��ʾ��
�嵥 10. ��� Zoho Reports ���еĸ��� SQL ��ѯ������
String companySql = "SELECT wf.Frequency, wf.Word,
cm.Name
From WordFrequency wf inner join Companies cm on
wf.word = cm.name";
File companyXmlFile = new File("companyFrequency.xml");
reportClient.exportDataUsingSQL(sqlUri, "XML",
companyXmlFile, companySql, null);
����ʹ�� SELECT ��ѯ�������� WordFrequency �� Companies ֮���
inner join�����е����빫˾��ƥ�䡣�嵥 11 չʾ�����иò�ѯ����� XML ��
����
�嵥 11. SQL SELECT ��ѯ��������
<?xml version="1.0" encoding="UTF-8" ?>
<response uri="/api/flexanvil/BlogAnalyzer" action="EXPORT">
<result>
<rows>
<row>
<column name="wf.Frequency">52</column>
<column name="wf.Word">apple</column>
<column name="cm.Name">Apple</column>
</row>
<row>
<column name="wf.Frequency">3</column>
<column name="wf.Word">sun</column>
<column name="cm.Name">Sun</column>
</row>
<row>
<column name="wf.Frequency">17</column>
<column name="wf.Word">intel</column>
<column name="cm.Name">Intel</column>
</row>
<row>
<column name="wf.Frequency">80</column>
<column name="wf.Word">microsoft</column>
<column name="cm.Name">Microsoft</column>
</row>
</rows>
</result>
</response>
����������Щ���Ӷ����� XML����������Ժ�����������ɻ�Ӧ�ó����С����磬��
������ Java Ӧ�ó����н����� XML���Ա���ʾ��Ӧ�ó����С�
��ҳ��
�����͵���ͼ��
Zoho Reports �Ķ�������֮һ�ǿ��ӷ�������visual analyzer�������ӷ�����
��������ٴ�����ݵ�ͼ�?ͼ�κ������档��Ϊһ�����ӣ���������Ҫ����һ
��ͼ�Σ���ʾ����Ƶ����ߵ�һЩ���ʡ�ͼ 2 չʾ�����ڴ���������ͼ�Ŀ������
����visual designer�������鿴 ��ͼ����
ͼ 2. Zoho Reports ���ӷ������е�����ͼ
������ͼ֮��ͨ����� exportData() ������Ϊ���ָ��һ��ͼ���ʽ����������
�°��ͼ��
String imgURI =
reportClient.getURI(ZohoConfig.LOGINNAME,
ZohoConfig.DATABASENAME,"FrequencyChart");
File imgFile = new File("FrequencyChart.png");
reportClient.exportData(imgURI,"IMAGE",imgFile,null,null);
exportData() ������ͼ�α���Ϊ PNG �ļ���Ȼ�������ʹ�ø� PNG �ļ�����Ӧ
�ó�������ʾͼ�Ρ�
��ҳ��
������
���� Zoho Reports �ṩ�� REST-ful �� Web ��������ͳӦ�ó��������
��������������������͵�����ݡ����� XML �����Լ�����Ԥ�����ͼ�Ρ�������
�谲װ�����������ٷ�����ݺͲ�����������������Խ�����ʱ�����ڽ��п�
�����Ʒ���ҲΪ��������ṩ������ݺ�ִ�п��ӷ��������� �� Ҳ�����Ʒ��������
�ŵ㡣�������ݲ���ǿ����Ʒ����ɡ�
--
[1;36mHappy XMLing
[m[35m�� ��Դ:��ˮľ���� http://newsmth.net��[FROM: 114.249.215.*][m
Technical Details
Message-ID:
<507dN4$DHq@newsmth.net>Path:
arc1-ca.pugleaf.net!g2news1.google.com!news4.google.com!feeder3.cambriumusenet.nl!feed.tweaknews.nl!193.201.147.93.MISMATCH!xlned.com!feeder7.xlned.com!news2.euro.net!feeds.phibee-telecom.net!news.byr.edu.cn!news.newsmth.net!NEWSMTHShow Full Headers
Complete Article Headers
X-Google-Thread: 115571,d918f9edf0fcfb66,start X-Google-NewGroupId: yes X-Google-Attributes: gidf7ebf7e2af,domainid0,public,usenet X-Google-Language: Chinese,GB Path: arc1-ca.pugleaf.net!g2news1.google.com!news4.google.com!feeder3.cambriumusenet.nl!feed.tweaknews.nl!193.201.147.93.MISMATCH!xlned.com!feeder7.xlned.com!news2.euro.net!feeds.phibee-telecom.net!news.byr.edu.cn!news.newsmth.net!NEWSMTH From: thinkhy@newsmth.net-SPAM.no (<Test/>) Newsgroups: cn.bbs.comp.xml Subject: ���� Zoho Reports �� XML ̽���Ʒ���(ת��) Date: 26 May 2010 14:42:29 GMT Organization: ˮľ���� Message-ID: <507dN4$DHq@newsmth.net> Mime-Version: 1.0 Content-Type: text/plain; charset="gb2312" Content-Transfer-Encoding: 8bit X-Filename: XML/c/M.1274884948.30