把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>
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>
a=xmlread.Value;
break ;
case "UserId":
b=(string)xmlread.Value;
break ;
获取到一个值,就再向下循环,所以后面就获取不到值啦.
楼上的说的不对吧?我把代码改成这样也不行啊
if(xmlread.Name.ToString()=="DataSource")
a=xmlread.Value.ToString();
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();
我用我的代码,其他什么都没改,就是改了个a=xmlread.ReadString();就好了,不明白...
msdn上是说xmlread.Value.ToString();是获取当前节点的文本啊
获取当前节点的文本值,只有当结点类型为如下时,返回文本值。
节点类型 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