我现在遇到过这样的一个问题...
是及时数方面的问题...有一个xml文件
里面有3个大的节点,(分别是 创建,删除,修改)节点里面有近千个小的节点内容,每个大的节点下面都是这样的...我原先的做法是:用一个线程来操作这个xml文件。
先是分析出3个大的节点,然后 用xmlnode在去分析子节点.[注意:每分析一个子节点出来,就要将数据入库...]我现在的思路是这样的:我想用3个线程同时操作这个文件里面的对应的 :create,delete,update 这个3个大节点里面的内容..
但是注意的是 还要判断 最后一个线程操作完它所对应的节点 ,那么这轮读取xml文件才能退出。
才能进入下一轮读取xml文件,
因为每隔接近一分钟就会来一个跟新数据包的xml文件。
我想,用3个线程应该比一个线程快。现在改写的代码里面,3个线程处理这个文件 一直没有弄好...希望给位大侠帮帮忙...xml文件大概内容是这个样子
<?xml version="1.0" encoding="UTF-8"?>
<evjen>
<subscription-update>
<odds-model-object-changed typeId="aaa" id="1214033306">
<properties>
<property name="a1">2009-09-04 05:34:50.498</property>
<property name="a2">67.0</property>
</properties>
</odds-model-object-changed>
<odds-model-object-deleted typeId="aaa" id="1215932285"></odds-model-object-deleted>
<odds-model-object-deleted typeId="aaa" id="1215932278"></odds-model-object-deleted>
<odds-model-object-created>
<odds-model-object typeId="aaa" id="1215580620">
<properties>
<property name="a3">1.77</property>
<property name="a4">1</property>
<property name="a5">2009-09-04 05:35:10.834</property>
</properties>
</odds-model-object>
</odds-model-object-created>
</subscription-update>
</evjen>如果某个节点不存在,那么负责读取这个节点的线程就退出此次读取...
是及时数方面的问题...有一个xml文件
里面有3个大的节点,(分别是 创建,删除,修改)节点里面有近千个小的节点内容,每个大的节点下面都是这样的...我原先的做法是:用一个线程来操作这个xml文件。
先是分析出3个大的节点,然后 用xmlnode在去分析子节点.[注意:每分析一个子节点出来,就要将数据入库...]我现在的思路是这样的:我想用3个线程同时操作这个文件里面的对应的 :create,delete,update 这个3个大节点里面的内容..
但是注意的是 还要判断 最后一个线程操作完它所对应的节点 ,那么这轮读取xml文件才能退出。
才能进入下一轮读取xml文件,
因为每隔接近一分钟就会来一个跟新数据包的xml文件。
我想,用3个线程应该比一个线程快。现在改写的代码里面,3个线程处理这个文件 一直没有弄好...希望给位大侠帮帮忙...xml文件大概内容是这个样子
<?xml version="1.0" encoding="UTF-8"?>
<evjen>
<subscription-update>
<odds-model-object-changed typeId="aaa" id="1214033306">
<properties>
<property name="a1">2009-09-04 05:34:50.498</property>
<property name="a2">67.0</property>
</properties>
</odds-model-object-changed>
<odds-model-object-deleted typeId="aaa" id="1215932285"></odds-model-object-deleted>
<odds-model-object-deleted typeId="aaa" id="1215932278"></odds-model-object-deleted>
<odds-model-object-created>
<odds-model-object typeId="aaa" id="1215580620">
<properties>
<property name="a3">1.77</property>
<property name="a4">1</property>
<property name="a5">2009-09-04 05:35:10.834</property>
</properties>
</odds-model-object>
</odds-model-object-created>
</subscription-update>
</evjen>如果某个节点不存在,那么负责读取这个节点的线程就退出此次读取...
况且, 何必等待这几个线程终止呢? 线程开始以后就让他自己灭亡好了。
下次来了任务再new 三个线程。
每隔接近一分钟 就来个300多k的跟新文件
程序根本不可能在50秒的时间内将数据分析出来然后入库。这样就会造成扎堆的现象,到后来 xml文件越积越多 根本处理不过来...
试试webservice ,web上传DataSet,直接入库、存xml,不要第二次分析xml结构。
可以叫对方把xml数据加载到数据库然后传给你的表。在数据库里面处理就很快了。
楼上说的 是怎么弄的啊???我是用xmldocument来装载xml文件的
由于你的操作都是只读的,所以不要使用XmlDocument来操作XML文件,那样会很慢,特别是XML文件较大的情况下。你应该使用XPathDocument来创建XPathNavigator来操作XML,由于XPathDocument是只读的,所以创建的XPathNavigator执行效率很高。创建方法参考:XPathDocument doc = new XPathDocument("books.xml");
XPathNavigator nav = ((IXPathNavigable)doc).CreateNavigator();