数据库中的一个字段,存的是xml文件内容怎么办?

yuwen16 2003-04-16 03:26:37
这个文件内容怎么去读取指定的内容,比如
<?xml version="1.0" ?>
- <AccessRights>
- <CD Description="Common Data" HasRight="0">
- <C_COUNTRY Description="COUNTRY MAINTENANCE">
<C_COUNTRY_ADD Description="ADD COUNTRY" HasRight="0" />
<C_COUNTRY_MODIFY Description="MODIFY COUNTRY" HasRight="0" />
<C_COUNTRY_REMOVE Description="REMOVE COUNTRY" HasRight="0" />
</C_COUNTRY>
- <C_AREA Description="AREA MAINTENANCE">
<C_AREA_ADD Description="ADD AREA" HasRight="0" />
<C_AREA_MODIFY Description="MODIFY AREA" HasRight="0" />
<C_AREA_REMOVE Description="REMOVE AREA" HasRight="0" />
</C_AREA>
</CD>
- <EC Description="Equipment Control" HasRight="0">
- <C_BOOKING Description="Booking Operation">
<C_BOOKING_QUERYOWNEDELEMENTS Description="QUERY BOOKING" HasRight="0" />
<C_BOOKING_ADDGENERAL Description="ADD GENERAL" HasRight="0" />
<C_BOOKING_MODIFYGENERAL Description="MODIFY GENERAL" HasRight="0" />
</C_BOOKING>
</EC>
</AccessRights>

我要得到的是:
COUNTRY MAINTENANCE
ADD COUNTRY
MODIFY COUNTRY
REMOVE COUNTRY
顺便能解释下这些标志符的意思吗?谢谢了!
另能给一个类似处理的例子吗?

我的email是xuty@sealink-usa.com
能给个例子吗?
小弟,我在这谢谢了!
...全文
287 32 打赏 收藏 转发到动态 举报
写回复
用AI写文章
32 条回复
切换为时间正序
请发表友善的回复…
发表回复
yuwen16 2003-04-23
  • 打赏
  • 举报
回复
算了。结贴吧。。谢谢各位父老乡亲们!
Knight94 2003-04-22
  • 打赏
  • 举报
回复
"/bookstore/book/@bk:ISBN"是个字串,只不过带有个变量“@bk”。

直接获得层数,好像没有,你上网找找吧!
gweidian 2003-04-22
  • 打赏
  • 举报
回复
UP
yuwen16 2003-04-22
  • 打赏
  • 举报
回复
那有没有什么属性提供能一下子知道XML的层数呢?
yuwen16 2003-04-22
  • 打赏
  • 举报
回复
("/bookstore/book/@bk:ISBN");表示什么意思呀?能解释下吗?
yuwen16 2003-04-22
  • 打赏
  • 举报
回复
把它转成nodeList了也不可以知道它的层数吗??
咳,看来这问题,只能用笨方法了。
谢谢各位大哥的帮忙。。
yuwen16 2003-04-21
  • 打赏
  • 举报
回复
我没有用xpath的书。
我用的方法也是遍历,但是方法有所不一样。
XmlDocument doc = new XmlDocument();
doc.LoadXml(Xml);
int ModCount = doc.DocumentElement.ChildNodes.Item(i).ChildNodes.Count;
int ClaCount = doc.DocumentElement.ChildNodes.Item(i).ChildNodes.Item(j).ChildNodes.Count;
if (doc.DocumentElement.HasChildNodes)
{
for (int i = 0;i <= doc.DocumentElement.ChildNodes.Count-1; ++i)
{
MessageBox.Show(doc.DocumentElement.ChildNodes.Item(i).Attributes.Item(0).Value);
if (doc.DocumentElement.ChildNodes.Item(i).HasChildNodes)
{
for (int j = 0; j <= ModCount-1; ++j)
{
MessageBox.Show(doc.DocumentElement.ChildNodes.Item(i).ChildNodes.Item(j).Attributes.Item(0).Value);
if (doc.DocumentElement.ChildNodes.Item(i).ChildNodes.Item(j).HasChildNodes)
{
for (int k = 0; k <= ClaCount-1;++k)
{
MessageBox.Show(doc.DocumentElement.ChildNodes.Item(i).ChildNodes.Item(j).ChildNodes.Item(k).Attributes.Item(0).Value);
string[] CtrBtn = new string[ClaCount-1];
CtrBtn[k] = doc.DocumentElement.ChildNodes.Item(i).ChildNodes.Item(j).ChildNodes.Item(k).Attributes.Item(0).Value;
}
}
}
}
}
这样可以全部都取到。但是那是对于写死的只有三层的程序。假如没有写死的话,
那如何能获得它的树结构有多少层呢??
谢谢路在何方的帮忙。小弟真心感谢!
ixMind 2003-04-21
  • 打赏
  • 举报
回复
一般好像是根据你的xml的实际结构,使用
XmlNode.SelectSingleNode和XmlNode.SelectNodes这两个方法
来定位所需要操作的节点,这两个方法使用的是XPath的语法
XmlDocument等从XmlNode继承而来的类也都有这两个方法
你可以参考一下相关的书籍,例如XML高级编程
yuwen16 2003-04-21
  • 打赏
  • 举报
回复
就是遍历后,需要获取各个元素的Attributes。
但是我在获取的时候,需要判断这个子元素是属于哪个父元素的。
Knight94 2003-04-21
  • 打赏
  • 举报
回复
如果你不知道name,挨个分析啊!够累的,没有太好的办法。
wenzm 2003-04-21
  • 打赏
  • 举报
回复
1、把你的数据“放”到一个XmlDocument 对象中
方法:
XmlDocument doc = new XmlDocument();
doc.Load("booksort.xml");//当然,如果你的数据是在数据库中,可以把它放到一个stream再load到doc中;

2、通过Xpath检索
nodeList = root.SelectNodes("/bookstore/book/@bk:ISBN");//查询条件为XPath方式描述,换成你自己的即可
返回的是一个xmlnode列表,逐个可取出值





yuwen16 2003-04-21
  • 打赏
  • 举报
回复
就是不知道name呀,所以,才用了上面这笨方法。
那请问能不能知道这个树结构到底有多少层呢??
Knight94 2003-04-21
  • 打赏
  • 举报
回复
如果xml是多层,其你知道name的话,可以用XmlDocument的GetElementsByTagName(string name)这个函数,直接访问相应的节点。
yuwen16 2003-04-18
  • 打赏
  • 举报
回复
人呢?帮帮我呀。
majh5iu 2003-04-18
  • 打赏
  • 举报
回复
利用XPath
yuwen16 2003-04-18
  • 打赏
  • 举报
回复
<?xml version="1.0"?>
<AccessRights>
<CD Description="Common Data" HasRight="0">
<C_COUNTRY Description="COUNTRY MAINTENANCE">
<C_COUNTRY_ADD Description="ADD COUNTRY" HasRight="0"/>
<C_COUNTRY_MODIFY Description="MODIFY COUNTRY" HasRight="0"/>
<C_COUNTRY_REMOVE Description="REMOVE COUNTRY" HasRight="0"/>
</C_COUNTRY>
<C_AREA Description="AREA MAINTENANCE">
<C_AREA_ADD Description="ADD AREA" HasRight="0"/>
<C_AREA_MODIFY Description="MODIFY AREA" HasRight="0"/>
<C_AREA_REMOVE Description="REMOVE AREA" HasRight="0"/>
</C_AREA>
</CD>
<EC Description="Equipment Control" HasRight="0">
<C_BOOKING Description="Booking Operation">
<C_BOOKING_QUERYOWNEDELEMENTS Description="QUERY BOOKING" HasRight="0"/>
<C_BOOKING_ADDGENERAL Description="ADD GENERAL" HasRight="0"/>
<C_BOOKING_MODIFYGENERAL Description="MODIFY GENERAL" HasRight="0"/>
</C_BOOKING>
</EC>
</AccessRights>

请问如何取到这写字段:
COUNTRY MAINTENANCE
ADD COUNTRY
MODIFY COUNTRY
REMOVE COUNTRY
解决后立即结帖。谢谢!
yuwen16 2003-04-18
  • 打赏
  • 举报
回复
怎么用dom对象的??
ixMind 2003-04-18
  • 打赏
  • 举报
回复
我的xml本就只是初学乍练,这么复杂的问题我可搞不定了

你是指怎么样获取节点?
yuwen16 2003-04-18
  • 打赏
  • 举报
回复
谢谢ixMind(路在何方)。
我现在要做一个权限管理,他要解析这段xml文字,假如解析好了后。
根据这里面的内容来定义那些功能需要屏蔽的。。
所以这段xml是非常短的一段,还有大量的没写出来。
那我现在要处理它,不可能把Attributes[“写死”]需要找的属性写死吧,,
那怎么去判断呢?
那个是主接点的属性。
那个又不是主接点的属性呢?帮我想想好吗?
ixMind 2003-04-18
  • 打赏
  • 举报
回复
//XmlNode node
node.Attributes["your_attr"].Value大概就可以得到属性值了
加载更多回复(12)

110,571

社区成员

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

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

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