如何用c#写方法把xml文件读到数据库中

如何用c#写方法把xml文件读到数据库中,第1张

using System

using System.Text

using System.Xml

namespace ParsingXml

{

class Program

{

static void Main(string[] args)

{

XmlReader xmlReader = XmlReader.Create("c:/eurofxref-daily.xml")

while(xmlReader.Read())

{

if((xmlReader.NodeType == XmlNodeType.Element) &&(xmlReader.Name == "Cube"))

{

if(xmlReader.HasAttributes)

Console.WriteLine(xmlReader.GetAttribute("currency") + ": " + xmlReader.GetAttribute("rate"))

}

}

Console.ReadKey()

}

}

}

1.首先,我们正常使用Excel的另存为,看看能否顺利地直接另存为XML文件。

方法:

点击Excel左上角按钮,在d出的选项中,点击“另存为”

或者直接在Excel中按下快捷键F12

2.选择最后一项:其他格式。

3.接下来,重命名一下文件名,并选择文件类型为:

XML数据(*.xml)

4.点击“保存”按钮,会出现如下错误警告:

因为工作簿不包含任何XML映射,所以无法保存任何XML数据。

单击“帮助”以获取详细信息。

5.这个原因是我们的工作簿只是普通的Excel数据,的确没有做过XML映射,或者Excel数据也不是从XML文件导入的。

这时,我们尝试另存为另一种文件类型:

XML电子表格2003(*.xml)

6.点击保存按钮。

7.这时会d出一个兼容性对话框,问你是否保持工作簿的这种格式。

8.点击“是”,即可将Excel保存为XML格式的文档了。

我们使用软件打开这个XML文档(例如通过Chrome浏览器),发现格式正常,Excel数据也全在里面。

/* 前段时间恰好做过类似的东西,代码可以给你参考下。

 *  Xml配置见最后

 */

typedef struct SrcFileFmt

{

    int   ColID

    char  ColCode[64]      /* 字段英文名称 */

    char  ColName[128]     /* 字段中文名称*/

    char  ColType[20]      /* 字段类型(包含长度) */

    char  ColComment[128]  /* 字段描述 */

}SrcFileFmt

int main(int argc, char **argv)

{

    SrcFileFmt SrcFileFmt[128]

    int iNum = -1

    if ( 2 > argc )

    {

        printf("Usage: %s SrcXmlFile\n", argv[0])

        return -1

    }

    iNum = parseSourceCfg(SrcCfgFile, SrcFileFmt)

    if (iNum == -1)

    {

        return -1

    }

    return 0

}

/* 调用此函数后,xml文件的内容会被存储到结构体数组SrcFileFmt srcfilefmt[]中

 * 此函数依赖于libxml2-2.9.2.tar.xz

 */

int parseSourceCfg(char *FileName, SrcFileFmt srcfilefmt[])

{ /* 解析源文件xml,FileName 为源xml文件名 */

    xmlDocPtr doc

    xmlNodePtr cur, root

    char sFileName[64] = {'\0'}

    int cnt = 0

    if (FileName == NULL)

    {

        return -1

    }

    sprintf(sFileName, "%s.xml", FileName)

    doc = xmlParseFile(sFileName)

    if (doc == NULL)

    {

        return -1

    }

    root = xmlDocGetRootElement(doc)

    if (root == NULL) {

        xmlFreeDoc(doc)

        return(-1)

    }

    if (xmlStrcmp(root->name, (const xmlChar *) "SrcRoot"))

    {

        xmlFreeDoc(doc)

        return -1

    }

    

    cur = root->xmlChildrenNode

    while (cur != NULL) 

    {

        if ((!xmlStrcmp(cur->name, (const xmlChar *)"Column")))

        {

            xmlChar *key

            xmlNodePtr cur_sub = cur

            cur_sub = cur_sub->xmlChildrenNode

            while (cur_sub != NULL) 

            {

                if ((!xmlStrcmp(cur_sub->name, (const xmlChar *)"ColID"))) {

                    key = xmlNodeListGetString(doc, cur_sub->xmlChildrenNode, 1)

                    killblank((char*)key)

                    srcfilefmt[cnt].ColID = atoi((char*)key)

                    xmlFree(key)

                }

                if ((!xmlStrcmp(cur_sub->name, (const xmlChar *)"ColCode"))) {

                    key = xmlNodeListGetString(doc, cur_sub->xmlChildrenNode, 1)

                    killblank((char*)key)

                    strcpy(srcfilefmt[cnt].ColCode, (char*)key)

                    xmlFree(key)

                }

                else if ((!xmlStrcmp(cur_sub->name, (const xmlChar *)"ColName"))) {

                    key = xmlNodeListGetString(doc, cur_sub->xmlChildrenNode, 1)

                    killblank((char*)key)

                    strcpy(srcfilefmt[cnt].ColName, (char*)key)

                    xmlFree(key)

                }

                else if ((!xmlStrcmp(cur_sub->name, (const xmlChar *)"ColType"))) {

                    key = xmlNodeListGetString(doc, cur_sub->xmlChildrenNode, 1)

                     killblank((char*)key)

                    strcpy(srcfilefmt[cnt].ColType, (char*)key)

                    xmlFree(key)

                }

                else if ((!xmlStrcmp(cur_sub->name, (const xmlChar *)"ColComment"))) {

                    key = xmlNodeListGetString(doc, cur_sub->xmlChildrenNode, 1)

                    killblank((char*)key)

                    strcpy(srcfilefmt[cnt].ColComment, (char*)key)

                    xmlFree(key)

                }

                cur_sub = cur_sub->next

            }

            cnt++

        }

        cur = cur->next

    }

    xmlFreeDoc(doc) 

    return cnt

}

<SrcRoot>

    <Column>

        <ColID>1</ColID>

        <ColCode>kmh</ColCode>

        <ColName>字段1</ColName>

        <ColType>VARCHAR(11)</ColType>

    </Column>

    <Column>

        <ColID>2</ColID>

        <ColCode>dfkmh</ColCode>

        <ColName>字段2</ColName>

        <ColType>VARCHAR(11)</ColType>

    </Column>

    <Column>

        <ColID>3</ColID>

        <ColCode>hbh</ColCode>

        <ColName>字段3</ColName>

        <ColType>INTEGER(10)</ColType>

    </Column>

</SrcRoot>


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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存