怎么设计这个类...

MOmo400 2009-03-23 10:54:49
有XML文件,
<A>
<b>
<name>1111</name>
<key>2222</Key>
<name>3333</name>
<value>4</value>
</b>
<b>
<name>5</name>
<key>6</Key>
<name>7</name>
<value>8</value>
</b>
</A>
怎么设计一个类读取这个文件.
最后的结果是

比如我想读取 值3333 用read(3)就可以把值给读取出来
...全文
135 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
MOmo400 2009-03-23
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 coodd 的回复:]
你要读第几子节点,就设一下Current属性,要不怎么知道你读哪个?
[/Quote]

不知道是第几个节点...
coodd 2009-03-23
  • 打赏
  • 举报
回复
你要读第几子节点,就设一下Current属性,要不怎么知道你读哪个?
MOmo400 2009-03-23
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 scy251147 的回复:]
C# code
public static string read(int i)
{
string name = "";
XmlDocument xmldoc = new XmlDocument();
xmldoc.Load("read.xml");
XmlNode node = xmldoc.SelectSingleNode("A");
foreach (XmlNode xn in node.ChildNodes)
{
name += xn.ChildNodes[i-1].InnerText.ToString()+"|";
}
return name;
}
调用read(3)
返回的结果是 3333|7|
然后自己利用split函数进行切割
[/Quote]

这样read(int i )灵活性不够吧..假如我文件如下

<A>
<b>
<name>1111 </name>
<key>2222 </Key>
<name>3333 </name>
<value>4 </value>
</b>
<b>
<name>5 </name>
<key>6 </Key>
<name>7 </name>
<value>8 </value>
</b>
<b>
<name>1111 </name>
<key>2222 </Key>
<name>3333 </name>
<value>4 </value>
</b>
<b>
<name>5 </name>
<key>6 </Key>
<name>7777</name>
<value>8 </value>
</b>

</A>

要取7777也是取得不太正确
MOmo400 2009-03-23
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 coodd 的回复:]


public String Read(int index) //按序号读当前节点的子节点
{
return root.ChildNodes[current].InnerText;
}

[/Quote]

这样可以吗?你读取出来应该是一个定值吧..
再说了return root.ChildNodes[index].InnerText;这样的话也是不行的..
scy251147 2009-03-23
  • 打赏
  • 举报
回复

public static string read(int i)
{
string name = "";
XmlDocument xmldoc = new XmlDocument();
xmldoc.Load("read.xml");
XmlNode node = xmldoc.SelectSingleNode("A");
foreach (XmlNode xn in node.ChildNodes)
{
name += xn.ChildNodes[i-1].InnerText.ToString()+"|";
}
return name;
}

调用read(3)
返回的结果是 3333|7|
然后自己利用split函数进行切割
coodd 2009-03-23
  • 打赏
  • 举报
回复
ReadXml(string path)
path为xml文件的路径
coodd 2009-03-23
  • 打赏
  • 举报
回复

class ReadXml
{
XmlDocument xd; XmlNode root;
int current = 0;

public ReadXml(string path)
{
xd = new XmlDocument(); xd.Load(path);
root = xd.DocumentElement;
}

public String Read(int index) //按序号读当前节点的子节点
{
return root.ChildNodes[current].InnerText;
}

public int Current //设置或读取当前操作根节点的第几个子节点
{
get { return current; }
set { current = value; }
}
}
MOmo400 2009-03-23
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 OKILOVE 的回复:]
这是xml代码吗,是的话就用dataset.ReadXml()方法来实现
[/Quote]
是XML
MOmo400 2009-03-23
  • 打赏
  • 举报
回复
有难度
wuyq11 2009-03-23
  • 打赏
  • 举报
回复
读出xml到类或dataset里,再通过LINQ查询。
OKILOVE 2009-03-23
  • 打赏
  • 举报
回复
这是xml代码吗,是的话就用dataset.ReadXml()方法来实现
周药师 2009-03-23
  • 打赏
  • 举报
回复
<name>
<key>
<name>
<value>
...

这些ASP 的语法不懂

所以上面的只能提供一个参考
周药师 2009-03-23
  • 打赏
  • 举报
回复
做有一个数组
String[] Str = new String[8]{...}

public string read(int a)
{
return Str[a];
}
heyu52 2009-03-23
  • 打赏
  • 举报
回复
不可能实现得了,用name去取KEY还有可能
liu4545533 2009-03-23
  • 打赏
  • 举报
回复
用键值对可以实现
身边没有 编译工具不方便写具体代码

111,126

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧