我理解你是想问:如何把xml文件保存到SqlServer数据库中?一个xml对应一个数据库表。
通常就是读取xml中元素(节点)的值并作为insert
的参数,然后执行insert语句就是咯(当然你也可以把xml文件读到DataSet中,然后将DataSet数据保存到数据,这样不必使用Insert了)。至于你要打印那就是读数据库数据并整理的问题了。
但具体到你的问题,要看你xml文件的格式以及你要打印的格式才能给你代码。
补充问题的代码:
你可以使用Stream
s=StreamReader(fillpath,
SystemTextEncodingGetEncoding("UTF-8"))BaseStream;直接把s作为文本存入你数据库中的列
[delphi中如何将XML保存到数据库中]这要看你要保存到数据库的XML规范文件,而规范文件又分简单和复杂的,可以根据数据库管理员提供的标准XML,做XML文本文件。XML的每一行中每一个节点哪些可以更改,哪些不能更改。。。如Dim sRoot As MSXML2IXMLDOMElement ,sRootsetAttribute "COMPATIBLE_REV", "" 你要需要看XML的编写方法的书籍,电脑装个接口引擎,再调传网数据。。。。。。 我自己以前刚做这些也用了好几天才搞定。 例子我用VB写的,只说明如何定义IXMLDOMElement,怎样做节点。
我给你个解析的代码吧~具体存数据库得根据实际情况来
#include "StdAfxh"
#include "parseh"
#include <string>
#include "stdafxh"
#include <libxml/parserh>
#include <libxml/treeh>
#include <iostream>
#include <libxml/xpathh>
#include <libxml/xpathInternalsh>
#include <stdioh>
#include <stdlibh>
#include<windowsh>
using namespace std;
parse::parse()
//int parse::parsexml()
{
xmlDocPtr doc; //定义解析文档指针
xmlNodePtr curNode; //定义结点指针(你需要它为了在各个结点间移动)
xmlChar szKey; //临时字符串变量
char szDocName;
doc = xmlReadFile("SimACQ_Configxml","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(simulationSIM_PLAIN[i]Name,(char)szAttr);
}
szAttr=xmlGetProp(FileNodes,BAD_CAST "sliceNum");
if(szAttr!=NULL)
{
simulationSIM_PLAIN[i]Num=atoi((char)szAttr);
}
i++;
}
FileNodes=FileNodes->next;
}
xmlFree(FileNodes);
simulationSIM_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(simulationSIM_SPIRAL[i]Name,(char)szAttr);
}
szAttr=xmlGetProp(FileNodes,BAD_CAST "sliceNum");
if(szAttr!=NULL)
{
simulationSIM_SPIRAL[i]Num=atoi((char)szAttr);
}
i++;
}
FileNodes=FileNodes->next;
}
xmlFree(FileNodes);
simulationSIM_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(simulationSIM_AXIAL[i]Name,(char)szAttr);
}
szAttr=xmlGetProp(FileNodes,BAD_CAST "sliceNum");
if(szAttr!=NULL)
{
simulationSIM_AXIAL[i]Num=atoi((char)szAttr);
}
i++;
}
FileNodes=FileNodes->next;
}
xmlFree(FileNodes);
simulationSIM_AXIAL[i]flag=0;
}
}
xmlFree(szAttr);
}
curNode = curNode->next;
}
xmlFreeDoc(doc);
/return 0;/
}
有什么不明白的再问吧!
大容量装载COM接口。如果需要将文档的实体和属性析取到关系表中,最快的方法就是使用SQL Server 2000 Extensible Markup Language 30 Service Pack 1(SQLXML 30 SP1)提供的大容量装载COM接口。
package test11;
import javaxxmlparsers;
import orgw3cdom;
import javaio;
public class XMLUtil
{
//该方法用于从XML配置文件中提取具体类类名,并返回一个实例对象
public static Object getBean()
{
try
{
//创建文档对象
DocumentBuilderFactory dFactory = DocumentBuilderFactorynewInstance();
DocumentBuilder builder = dFactorynewDocumentBuilder();
Document doc;
doc = builderparse(new File("configxml"));
//获取包含类名的文本节点
NodeList nl = docgetElementsByTagName("className");
Node classNode=nlitem(0)getFirstChild();
String cName=classNodegetNodeValue();
//通过类名生成实例对象并将其返回
Class c=ClassforName(cName);
Object obj=cnewInstance();
return obj;
}
catch(Exception e)
{
eprintStackTrace();
return null;
}
}
}
<xml version="10">
<config>
<className>test11CatAdapter</className>
</config>
然后你吧解析处理的值放到数组或LIST或其他的你能存放的对象中。再写SQL插入到数据库就好了啊。主要数据库事务处理或用批处理
以上就是关于vc 怎么把xml文件保存到sql中全部的内容,包括:vc 怎么把xml文件保存到sql中、delphi中如何将XML保存到数据库中 读出 并且可以保存的数据读出保存到XML中、从ftp上下载每天的xml文件到本地,再解析本地的xml文件中的数据并将其存入sqlserver数据库中等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)