以文本方式查看主题

-  计算机科学论坛  (http://bbs.xml.org.cn/index.asp)
--  『 Dot NET,C#,ASP,VB 』  (http://bbs.xml.org.cn/list.asp?boardid=43)
----  在。NET里,如果找到XML文件里的某一个节点?请教  (http://bbs.xml.org.cn/dispbbs.asp?boardid=43&rootid=&id=8433)


--  作者:cwzb
--  发布时间:6/22/2004 1:12:00 PM

--  在。NET里,如果找到XML文件里的某一个节点?请教
诸位帮帮忙。有关DOM和XPATH的。
下面是一个XML文档。我要找到其中一个node节点
<?xml version="1.0" encoding="utf-8" ?>
<!-- 注:请不要直接在该文件中更改数据,否则将可能造成系统无法使用 -->
<appconfig xmlns="http://tempuri.org/config.xsd">
 <node name="isPermitMany" value="3213213"/>
 <node name="meterRefurbishSpan" value="32131"/>
 <node name="currentlyTurnoverExtremum" value="31323"/>
 <node name="intendingTurnoverExtremum" value="3132"/>
 <node name="currentlyRepastExtremum" value="6546"/>
</appconfig>
xpath,怎么写?node[@name='值']?
以下是我在.net里的写法:
XmlElement root=xmlDoc.DocumentElement;

XmlNode node=root.SelectSingleNode("descendant::node[@name='isPermitMany']");
但是返回过来的node
请却是指教!!!!!!!!!!!!!!!!!


--  作者:cwzb
--  发布时间:6/29/2004 12:06:00 PM

--  
已经搞定了。上次出错,只是一个常识性的错误:)真不好意思。呵。
--  作者:cwzb
--  发布时间:6/29/2004 12:15:00 PM

--  
把次上的问题描述一下:
原先的代码如下:
appconfig=xmlDoc.DocumentElement;
appconfig.SelectSingleNode("descendant::node[@name='isPermitMany']");

我把装载XML文档的代码放在了Page_Load()里面
xmlDoc.Load(Server.MapPath(xmlPath));

后来把装载代码跟查找代码放在一起,就没事了。
//
下载把我的一个发现与大空分析:
xmlDoc.Load(Server.MapPath(xmlPath));
appconfig=xmlDoc.DocumentElement;
xmlDoc.Save(Server.MapPath(xmlPath));//关键是这一句,我还什么都没有做,我为什么要存一次先?
//我把我的问题描述一下,当我更改appconfig.ChildNodes[index]这个节点的1号属性值时,它将会说,XML拒绝我记问它。。。但是当index=0时,问题,没有。非0时,便会有。
//如此,先在未改前保存一次,坏事情就没有发生了。

lock(this)
{
 try
 {
  appconfig.ChildNodes[index].Attributes[1].Value=p_varValue;    
  Application[p_varName]                         =p_varValue;

  xmlDoc.Save(Server.MapPath(xmlPath)); 
 }
 catch(Exception ex)
 {
  base._PageShowError("错误提示:"+ex.Message);
 }
}


--  作者:飞翔中的菜鸟
--  发布时间:7/7/2004 12:54:00 AM

--  
ding
--  作者:lcmax
--  发布时间:7/15/2004 2:17:00 PM

--  
呵呵
当不用SelectSingleNode时
我是这样做到的

   XmlTextReader xmlreadr = new XmlTextReader(Server.MapPath("x.xml"));
   string node ="intendingTurnoverExtremum";//想要得到的节点name[这个name有主键的意思]
   //string mark =
   string outputname = "";//输出values;
   int marki = 0;//
   int markj = 0;//标记
   while (xmlreadr.Read())
   {
    if (xmlreadr.NodeType==XmlNodeType.Element)
    {
     while (xmlreadr.MoveToNextAttribute())
     {
      marki += 1;
      if (xmlreadr.Value==node)
      {
                            markj = marki;//取得标记值
      }
      if (markj + 1== marki)
      {
       outputname = xmlreadr.Value;
      }
     }
    }
   }

   Response.Write(outputname);

vs2003+win2000+IE6SP1
编译通过


W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
62.500ms