vs2005中如何读取xml类型文件并存入数据库

vs2005中如何读取xml类型文件并存入数据库,第1张

我直接在这上面些难免有错误你自己调试看一下了不好意思

using SystemDataSqlcolint;

using SystemXml;

public Void ReaderXML(string URL)//URL是XML文件的路径

{

DataSet ds = new DataSet();

dsReaderXml("URL");

//下面就是把这个数据集存到数据库里面

}

VB的代码: Public Sub SaveValues()

Dim xml_document As DOMDocument

Dim values_node As IXMLDOMElement

Dim values_chilnode As IXMLDOMElement

Dim values_thrnode As IXMLDOMElement

Dim str As String

Dim strsql As String

Dim i As Integer Dim rs As ADODBRecordset

strsql = "select StudyTypeID,Title,enable,eMod from StudyType "

Set rs = gconnExecute(strsql)

Set xml_document = New DOMDocument

'创建根节点

Set values_node = CreateRootNode(xml_document, "root")

'创建词根节点

Set values_chilnode = CreateChildNode(xml_document, values_node, "user")

'循环rs记录集

While Not rsEOF

'再次创建词根节点

Set values_thrnode = CreateChildNode(xml_document, values_node, "userinfo")

'子节点加入父节点

AddElementToParent xml_document, values_thrnode, "StudyTypeID", rs("StudyTypeID")

AddElementToParent xml_document, values_thrnode, "Title", rs("Title")

AddElementToParent xml_document, values_thrnode, "enable", rs("enable")

AddElementToParent xml_document, values_thrnode, "eMod", rs("eMod")

xml_documentSave (AppPath & "\vbxml")

rsMoveNextWendMsgBox (" 已成功保存到跟目录vbxml中")End Sub'创建根节点的方法

Public Function CreateRootNode(xmlDoc As DOMDocument, RootNodeName As String) As IXMLDOMElement

Dim objRootNode As IXMLDOMElement

Set objRootNode = xmlDoccreateNode("element", RootNodeName, "")

xmlDocappendChild objRootNode

Set CreateRootNode = objRootNode

End Function

'创建子节点的方法

Public Function CreateChildNode(xmlDoc As DOMDocument, ParentNode As IXMLDOMElement, NewNodeName As String) As IXMLDOMElement

Dim NewNode As IXMLDOMElement

Dim NewNode1 As IXMLDOMElement

Set NewNode = xmlDoccreateNode("element", NewNodeName, "")

ParentNodeappendChild NewNode

Set CreateChildNode = NewNodeEnd Function

'子节点加入父节点并读取值

Public Sub AddElementToParent(xmlDoc As DOMDocument, elemParent As IXMLDOMElement, elemName As String, sValue As String)

Dim ChildNode As IXMLDOMElement

Set ChildNode = xmlDoccreateNode("element", elemName, "")

ChildNodeText = sValue

elemParentappendChild ChildNode

Set ChildNode = Nothing

End Sub

如果数据量很多,比如存取“很多人”的留言和其他相关信息。这样xml标签代码量自然会很多,逐个遍历所用的时间肯定较长,所以这个时候数据库就能快点,对于频繁 *** 作数据源的,自然使用数据库的连接池功能。

如果数据量不是很大。那自然选择xml,减少创建线程和线程等待的时间。

你就是要找ProductCode为某值的所有Table

把你的xpath改一下,一条查询就出来了

XmlNodeList tableList = docSelectNodes(stringFormat("//ProductCode[text()='{0}']/parent::Table",TxtProductCodeText));

然后遍历tableList取值就行了

如果数据量很大的话,用XPathDocument可以提高查询速度

====================================

"//ProductCode[text()='{0}']/parent::Table"

这条查询的意思查找任意(//)ProductCode节点,要求节点的text()返回值也就是innerText为{0},找到之后取他的父(parent)Table节点

这样查询出来的node集合就是所有你需要的节点,不用再作判断,直接取出放进你的DataTable就行了

这个是你自定义的,因为XML就是文本,把数据转换成XML和相反的 *** 作被称作序列化与反序列化。这样的话你自己定义序列化的逻辑和反序列化的逻辑就可以了。例如表MyTable有两个字段Id、Name。你可以定义成:

<MyTable>

<Items>

<Item Id="1" Name="a"/>

<Item Id="2" Name="b"/>

</Items>

</MyTable>

你也可以定义成:

<MyTable>

<Item>

<Id>1</Id>

<Name>a</Name>

</Item>

<Item>

<Id>2</Id>

<Name>b</Name>

</Item>

</MyTable>

至于程序你自己查查吧。就是数据库 *** 作和Xml *** 作的命名空间。Net封装得已经很完善了,用起来也很方便。

不说废话直接上代码,下面是要读取的xml文件:

<xml version="10" encoding="UTF-8">

<PERSON>

  <NAME>a1</NAME>

  <ADDRESS>b1</ADDRESS>

  <TEL>c1</TEL>

  <FAX>d1</FAX>

  <EMAIL>e1</EMAIL>

</PERSON>

下面是读取xml文件的java代码,在数据库中建一张和xml文件字段对应的表,将读取的数据插入到表中。如果数据插入不会,欢迎继续追问:

import javaioFile;

import javaxxmlparsersDocumentBuilder;

import javaxxmlparsersDocumentBuilderFactory;

import orgw3cdomDocument;

import orgw3cdomElement;

import orgw3cdomNodeList;

public class Test {

public static void main(String[] args) throws Exception{

Systemoutprintln("22");

DocumentBuilderFactory dbf = DocumentBuilderFactorynewInstance();

DocumentBuilder db = dbfnewDocumentBuilder();

Document document = dbparse(new File("candidatexml"));

NodeList list = documentgetElementsByTagName("PERSON");

for(int i = 0; i < listgetLength(); i++)

{

Element element = (Element)listitem(i);

String content = elementgetElementsByTagName("NAME")item(0)getFirstChild()getNodeValue();

            content = elementgetElementsByTagName("ADDRESS")item(0)getFirstChild()getNodeValue();

            content = elementgetElementsByTagName("TEL")item(0)getFirstChild()getNodeValue();

            content = elementgetElementsByTagName("FAX")item(0)getFirstChild()getNodeValue();

            content = elementgetElementsByTagName("EMAIL")item(0)getFirstChild()getNodeValue();

        }

    }

}

以上就是关于vs2005中如何读取xml类型文件并存入数据库全部的内容,包括:vs2005中如何读取xml类型文件并存入数据库、如何从数据库读取数据组织成xml文件发送出去、从数据库和xml读取数据那个快一点,哪个好一点等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存