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

点击:1264

[顶层访客留言] [回复顶层(需要先登录)] [表状] [详细]
[回复留言] [回复(需要先登录)] [引用(需要先登录)]普通文章跟帖
文章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[点击:28137]
  • 普通文章 _ xietao 2009-03-08 21:48:15 (ID:443) [点击:1264]
  • 普通文章 回复: 加四角号代码问题 xietao 2009-03-08 21:55:57 (ID:444) [点击:1030]
  • 普通文章 谢谢 Harry 2009-03-10 19:17:03 (ID:445) [点击:1471]
  • 普通文章 回复: 谢谢 xietao 2009-03-12 04:27:30 (ID:447) [点击:996]
  • 普通文章 问题已解决 Harry 2009-03-12 13:29:02 (ID:448) [点击:1578]
  •  

    在线用户
    访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客 (我自己)   访客访客
    当前栏目在线用户数 47, 总在线用户数 47