欢迎您来到 数字平台。 您尚未登录。[登录] [注册新用户]
当前位置: 论坛首页 / 栏目 产品与服务 / 文章 443

点击:1218

[顶层访客留言] [回复顶层(需要先登录)] [表状] [详细]
[回复留言] [回复(需要先登录)] [引用(需要先登录)]普通文章跟帖
文章id: 443

作者: xietao


我这里没有发现问题。

我这里的文本是:点击此处下载

为了能在我的机器上运行,我稍微修改了一行代码:

    class getSiJiaoHao
    {
        public string hao;
        public char authorchar;
        public void QuHao()
        {
            XPathDocument doc = new XPathDocument("f:\\temp\\sijiaohao.xml");
            XPathNavigator nav = ((IXPathNavigable)doc).CreateNavigator();
            XPathNodeIterator iter = nav.Select("/Collection/Character[@char='" + authorchar + "']");
            while (iter.MoveNext())
            {
                hao = iter.Current.Value;
            }
        }
    } 

因为我的本机这里把那个XML文件放在了f:\temp下。

为了方便安装部署,这个XML文件可以用以下两种方式处理:

1) 放在内务前端的数据目录下。在内务前端“文件/打开数据目录文件夹”可以找到这个文件夹,把XML文件放进去。在脚本代码中,在MyHost类里面,可以用this.MainForm.DataDir得到这个目录的路径字符串。

2) 通过HTTP访问XML文件。XPathDocument的参数uri可以写为类似 "http://localhost/somefolder/somefile.xml"的形式,你只需把那个XML文件部署到localhost的IIS的一个虚拟目录中即可。不过这个方法,每次要从localhost抓过来文件,可能速度有些慢,可以改进为先看一个本地目录(例如上述内务前端的数据目录)下有没有这个文件,如果没有再从http协议抓取,抓取的方法可以用WebClient类,而XPathDocument直接打开本地文件即可。

~~~

再提一点意见:

1) 用XPathDocument打开XML文件,然后获取XPathNavigator,这个做法有点让人看花了眼,我估计多半是你不熟悉相关概念,而走了一个高级的弯路。其实用XmlDocument打开XML文件,然后用一个XmlNode对象(比如文档根DocumentElement)的SelectSingleNode()或者SelectNodes()方法就可以了。

2) 在代码比较简单的情况下,getSiJiaoHao似乎没有必要专门成为一个类。只要在MyHost类里面编写一个QuHao()函数就可以了,带上三个参数,第一个参数为一个XmlDocument对象。XmlDocument对象存储在MyHost类里面即可,也就不会因反复创建而耽误时间。

3) 不过MyHost类毕竟是每次Ctrl+A触发的时候现创建,如果要将创建好的对象保持到和内务前端的生命周期一致,可以使用this.MainForm.ParamTable这样一个Hashtable机制,用类似this.MainForm.ParamTable["sjhm_dom"] =  sjhm_dom的语句设置对象,用类似XmlDocument sjhm_dom = (XmlDocument)this.MainForm.ParamTable["sjhm_dom"]的语句来取出对象。这样,XmlDocument对象只要创建好了,就一直持续使用,可以加快响应速度。



发表时间: 2009-03-08 21:48:15
最后修改时间: 2009-03-08 21:49:25



  • 普通文章 加四角号代码问题 Harry 2009-03-08 18:55:43[点击:27182]
  • 普通文章 _ xietao 2009-03-08 21:48:15 (ID:443) [点击:1218]
  • 普通文章 回复: 加四角号代码问题 xietao 2009-03-08 21:55:57 (ID:444) [点击:1010]
  • 普通文章 谢谢 Harry 2009-03-10 19:17:03 (ID:445) [点击:1422]
  • 普通文章 回复: 谢谢 xietao 2009-03-12 04:27:30 (ID:447) [点击:973]
  • 普通文章 问题已解决 Harry 2009-03-12 13:29:02 (ID:448) [点击:1528]
  •  

    在线用户
    (无) 
    当前栏目在线用户数 0, 总在线用户数 0