ftpxml解析
㈠ 從ftp上下載每天的xml文件到本地,再解析本地的xml文件中的數據並將其存入sqlserver資料庫中
我給你個解析的代碼吧~具體存資料庫得根據實際情況來
#include "StdAfx.h"
#include "parse.h"
#include <string>
#include "stdafx.h"
#include <libxml/parser.h>
#include <libxml/tree.h>
#include <iostream>
#include <libxml/xpath.h>
#include <libxml/xpathInternals.h>
#include <stdio.h>
#include <stdlib.h>
#include<windows.h>
using namespace std;
parse::parse()
//int parse::parsexml()
{
xmlDocPtr doc; //定義解析文檔指針
xmlNodePtr curNode; //定義結點指針(你需要它為了在各個結點間移動)
xmlChar *szKey; //臨時字元串變數
char *szDocName;
doc = xmlReadFile("SimACQ_Config.xml","GB2312",XML_PARSE_RECOVER); //解析文件
//檢查解析文檔是否成功,如果不成功,libxml將指一個注冊的錯誤並停止。
if (NULL==doc)
{
fprintf(stderr,"Document not parsed successfully. /n");
/*return -1;*/
}
curNode = xmlDocGetRootElement(doc); //確定文檔根元素
/*檢查確認當前文檔中包含內容*/
if (NULL == curNode)
{
fprintf(stderr,"empty document/n");
xmlFreeDoc(doc);
/*return -1;*/
}
/*在這個例子中,我們需要確認文檔是正確的類型。「root」是在這個示例中使用文檔的根類型。*/
if (xmlStrcmp(curNode->name, BAD_CAST "SIMCONFIG"))
{
fprintf(stderr,"document of the wrong type, root node != mail");
xmlFreeDoc(doc);
/*return -1; */
}
curNode = curNode->xmlChildrenNode;
xmlNodePtr propNodePtr = curNode;
while(curNode != NULL)
{
//取出節點中的內容
if ((!xmlStrcmp(curNode->name, (const xmlChar *)"ComConfig")))
{
xmlNodePtr comConfigPtr= curNode->children;
while(comConfigPtr!=NULL)
{
if((!xmlStrcmp(comConfigPtr->name,(const xmlChar *)"DMS")))
{
xmlChar* szAttr = xmlGetProp(comConfigPtr,BAD_CAST "IP");
IP=(char*)szAttr;
szAttr=xmlGetProp(comConfigPtr,BAD_CAST "PORT");
PORT=atoi((const char *)szAttr);
szAttr=xmlGetProp(comConfigPtr,BAD_CAST "TIMEOUT");
TIMEOUT=atoi((const char *)szAttr);
xmlFree(szAttr);
}
comConfigPtr=comConfigPtr->next;
}
}
if ((!xmlStrcmp(curNode->name, (const xmlChar *)"Log")))
{
xmlChar* szAttr = xmlGetProp(curNode,BAD_CAST "Flag");
if(szAttr!=NULL)
{
if((!xmlStrcmp(szAttr,(const xmlChar *)"True")))
{
FLAG=true;
}
else
{
FLAG=false;
}
}
szAttr = xmlGetProp(curNode,BAD_CAST "Path");
if(szAttr!=NULL)
{
PATH=(char*)szAttr;
}
xmlFree(szAttr);
}
if ((!xmlStrcmp(curNode->name, (const xmlChar *)"DMS")))
{
xmlChar* szAttr = xmlGetProp(curNode,BAD_CAST "Cache");
if(szAttr!=NULL)
{
Cache=atoi((const char *)szAttr);
}
xmlFree(szAttr);
}
if ((!xmlStrcmp(curNode->name, (const xmlChar *)"SimFile")))
{
xmlChar* szAttr = xmlGetProp(curNode,BAD_CAST "Type");
if(szAttr!=NULL)
{
if((!xmlStrcmp(szAttr,(const xmlChar *)"PlainFilm")))
{
xmlNodePtr FileNodes=curNode->children;
int i=0;
while(FileNodes!=NULL)
{
if((!xmlStrcmp(FileNodes->name,(const xmlChar *)"FILE")))
{
szAttr = xmlGetProp(FileNodes,BAD_CAST "name");
if(szAttr!=NULL)
{
/*SIM_PLAIN[i].Name=(char*)szAttr;*/
strcpy(simulation.SIM_PLAIN[i].Name,(char*)szAttr);
}
szAttr=xmlGetProp(FileNodes,BAD_CAST "sliceNum");
if(szAttr!=NULL)
{
simulation.SIM_PLAIN[i].Num=atoi((char*)szAttr);
}
i++;
}
FileNodes=FileNodes->next;
}
xmlFree(FileNodes);
simulation.SIM_PLAIN[i].flag=0;
}
if((!xmlStrcmp(szAttr,(const xmlChar *)"Spiral"))){
xmlNodePtr FileNodes=curNode->children;
int i=0;
while(FileNodes!=NULL)
{
if((!xmlStrcmp(FileNodes->name,(const xmlChar *)"FILE")))
{
szAttr = xmlGetProp(FileNodes,BAD_CAST "name");
if(szAttr!=NULL)
{
/*SIM_SPIRAL[i].Name=(char*)szAttr;*/
strcpy(simulation.SIM_SPIRAL[i].Name,(char*)szAttr);
}
szAttr=xmlGetProp(FileNodes,BAD_CAST "sliceNum");
if(szAttr!=NULL)
{
simulation.SIM_SPIRAL[i].Num=atoi((char*)szAttr);
}
i++;
}
FileNodes=FileNodes->next;
}
xmlFree(FileNodes);
simulation.SIM_SPIRAL[i].flag=0;
}
if((!xmlStrcmp(szAttr,(const xmlChar *)"axial")))
{
xmlNodePtr FileNodes=curNode->children;
int i=0;
while(FileNodes!=NULL)
{
if((!xmlStrcmp(FileNodes->name,(const xmlChar *)"FILE")))
{
szAttr = xmlGetProp(FileNodes,BAD_CAST "name");
if(szAttr!=NULL)
{
/* SIM_AXIAL[i].Name=(char*)szAttr;*/
strcpy(simulation.SIM_AXIAL[i].Name,(char*)szAttr);
}
szAttr=xmlGetProp(FileNodes,BAD_CAST "sliceNum");
if(szAttr!=NULL)
{
simulation.SIM_AXIAL[i].Num=atoi((char*)szAttr);
}
i++;
}
FileNodes=FileNodes->next;
}
xmlFree(FileNodes);
simulation.SIM_AXIAL[i].flag=0;
}
}
xmlFree(szAttr);
}
curNode = curNode->next;
}
xmlFreeDoc(doc);
/*return 0;*/
}
有什麼不明白的再問吧!
㈡ 怎麼樣C語言解析一個XML文件中的信息,題目很詳細,跪求高人指點。
這個要求不需要作XML的解析,用字元串搜索功能就足夠了,把網頁內容讀出之中按字元串搜索就可以找到<lat>和<lng>。
比如讓指針 char * page 指向讀取得到的網頁內容,就可以這樣得到經度lat和緯度lng:
#include <string.h>
#include <stdio.h>
double lat, lng;
char * str_lat, *str_lng;
str_lat = strstr(page, "<lat>"); /*搜索字元串<lat>的位置*/
sscanf(str_lat+5, "%lf", &lat); /*從搜索到的位置之後讀取一個浮點數作為緯度lat*/
str_lng = strstr(page, "<lng>");
sscanf(str_lng+5, "%lf", &lng); /*類似地,讀出經度lng*/
㈢ 用c++怎麼編寫xml解析器
我們都是用第三方的
要是寫得出,要麼開源掉,要麼賣錢了
寫這種東西一般估計也就學生會寫吧,真正做的人更樂意第三方庫巴
㈣ 新手求教 FTP上解析XML
首先你要弄一個edtftpj.jar的jar包。我用的2.2.2版本的。
然後申明一個FileTransferClient。
FileTransferClient ftp = new FileTransferClient();
接下來設置一些東西,下面4個設置是必須的:
ftp.setRemoteHost("ftp伺服器的IP地址");
ftp.setRemotePort("ftp伺服器的埠號");
ftp.setUserName("你用來登陸的賬號");
ftp.setPassword("你用來登陸的密碼");
然後……連接。
ftp.connect();
㈤ linux腳本xml文件ftp傳輸,xml文件如下: xml文件是伺服器發給的,沒有換行,連著寫的。
嘗試用Ultraedit編輯文件,然後保存為unix格式,
通過ftp
bin模式上傳試一下
㈥ ftp上傳文件(*.xml格式所有文件)上傳失敗,怎麼處理
重新上傳或改一下擴展名
㈦ 利用 WebClient函數下載ftp伺服器上xml問題
為什麼要使用ftp呢, 把那個upload.xml 放到web目錄下 使用http下載
㈧ 關於ftp下載的設計
我放在service中去下載了,每隔一分鍾去調用下介面,判斷有沒有任務,每個任務裡面都是一個ftp的xml,然後下載到本地去解析的,每個xml裡面又定義ftp素材,現在發現for循環的時候,有的xml沒有下載下來,還不知道問題出在哪裡了!