vc 怎么把xml文件保存到sql中

vc 怎么把xml文件保存到sql中,第1张

我理解你是想问:如何把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数据库中等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9796623.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-02
下一篇 2023-05-02

发表评论

登录后才能评论

评论列表(0条)

保存