把XML节点的值赋给字符串:
XmlTextReader xmlread=new XmlTextReader("ConnectCFG.XML");
xmlread.ReadStartElement("ConnetctSet");

while(xmlread.Read())
{
switch(xmlread.Name)
{
case "DataSource":
a=xmlread.Value;

break ;
case "UserId":
b=(string)xmlread.Value;
break ; } }
我单步的时候明明看到xmlread.Value有值,但再下一步的时候就发现原先本盖赋给字符串的值成了""空的,这是怎么回事呢?
我的XML文件是:
<?xml version="1.0" encoding="utf-8" ?>
<ConnetctSet>
    <DataSource>Empty</DataSource>
    <UserId>SA</UserId>
    <Password> </Password>
    <Database>Money</Database>
</ConnetctSet>

解决方案 »

  1.   

    case "DataSource":
    a=xmlread.Value;

    break ;
    case "UserId":
    b=(string)xmlread.Value;
    break ;
    获取到一个值,就再向下循环,所以后面就获取不到值啦.
      

  2.   


    楼上的说的不对吧?我把代码改成这样也不行啊 
    if(xmlread.Name.ToString()=="DataSource")
        a=xmlread.Value.ToString();
      

  3.   

    XmlTextReader reader;
    try
    {
      reader = new XmlTextReader(filename);
      reader.WhitespaceHandling = WhitespaceHandling.None;
      while(reader.Read())
      {
         if(reader.NodeType == XmlNodeType.Element)
         {
    switch(reader.Name)
    {
       case "DataSource" :
      Console.WriteLine("<{0}>",reader.ReadString());
    break;
    case "UserId" :
    Console.WriteLine("<{0}>",reader.ReadString());
    break;
    case "Password" :
    Console.WriteLine("<{0}>",reader.ReadString());
    break;
    case "Database" :
    Console.WriteLine("<{0}>",reader.ReadString());
    break;
    }
    }

    //case XmlNodeType.Element :
    // Console.WriteLine("<{0}>",reader.Name);
    //break;

    }
    }
    catch
    {
    }
    Console.ReadLine();
      

  4.   

    谢谢楼上的大哥,问题解决了,但偶不明白,为什么a=xmlread.Value.ToString();无法获取值呢?
    我用我的代码,其他什么都没改,就是改了个a=xmlread.ReadString();就好了,不明白...
    msdn上是说xmlread.Value.ToString();是获取当前节点的文本啊
      

  5.   

    你看MSDN上是这么解释的:
    获取当前节点的文本值,只有当结点类型为如下时,返回文本值。
        节点类型                    Value
    1.Attribute                     特性值
    2.CDATA                         CDATA 节的内容。
    3.Comment                      注释的内容。
    4.DocumentType                     内部子集。
    5.ProcessingInstruction       全部内容(不包括指令目标)。
    6.SignificantWhitespace       xml:space= 'preserve' 范围中的空白。
    7.Text                      文本节点的内容。
    8.Whitespace                 标记之间的空白。
    9.XmlDeclaration            声明的内容.
    取决于NodeType,如果不是以上类型的话,返回的是string.empty;  可查MSDN