这让我情何以堪啊~~~~

武十二 2012-05-15 12:51:43

xml定义:
<MenuItems>
<MenuItems1 Text="快件托运" id="1" NavigateUrl="">
<SubMenuItemsss Text="网上寄件" id="11" NavigateUrl=""></SubMenuItemsss>
<SubMenuItems2 Text="寄件查询" id="12" NavigateUrl="">
<SsubMenuItems Text="收送范围查询" id="121" NavigateUrl=""></SsubMenuItems>
<SsubMenuItems Text="服务时效查询" id="122" NavigateUrl=""></SsubMenuItems>
<SsubMenuItems Text="快件运费查询" id="123" NavigateUrl=""></SsubMenuItems>
<SsubMenuItems Text="汇率查询" id="124" NavigateUrl=""></SsubMenuItems>
<SsubMenuItems Text="违法违规禁寄物品查询" id="125" NavigateUrl=""></SsubMenuItems>
<SsubMenuItems Text="进出口物品条例查询" id="126" NavigateUrl=""></SsubMenuItems>
<SsubMenuItems Text="客户编码查询" id="127" NavigateUrl=""></SsubMenuItems>
</SubMenuItems2>
<SubMenuItems3 Text="常用表格" id="13" NavigateUrl=""></SubMenuItems3>
<SubMenuItems4 Text="通知取件" id="14" NavigateUrl=""></SubMenuItems4>
<SubMenuItems5 Text="准备货件" id="15" NavigateUrl=""></SubMenuItems5>
... ... .... .... ...

C#代码这样写得不到xml该节点的子节点,谁能告诉为什么?
法一: XmlNodeList xn_treenode = X_nodes.SelectNodes("descendant::MenuItems");
xn_treenode 的count值为要么为0,要么为1。为什么?
法二: XmlNode xmlnode = X_nodes.SelectSingleNode("descendant::MenuItems");
xmlnode MenuItems1 级节点能取到,但是SubMenuItems2 节点就取不到,为什么?


小弟在此跪求各位大虾指教。
...全文
179 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
test2050 2012-05-16
  • 打赏
  • 举报
回复
找找现成的代码例子。自己再研究研究可能就出来了。
武十二 2012-05-15
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]

!IsPostBack了吗?
[/Quote]
这跟!IsPostBack有什么关系哦?
武十二 2012-05-15
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]

另外看看xml文件头是否有xmlns属性。如果有需要加入manager控制。
XmlDocument xmldoc = new XmlDocument();
xmldoc.Load(@"c:\m.xml");
XmlNamespaceManager manager = new XmlNamespaceManager(xmldoc.Nam……
[/Quote]
我想应该不是xmlns属性的问题,xml节点除了最后一级是同名外其他都不相同,所以不会有命名空间的问题。
public XmlNode GetXmlNodes(string menus)
{
XmlNode xnode = null;
string filepath = System.AppDomain.CurrentDomain.SetupInformation.ApplicationBase + "TranslateXML.xml";
if (!File.Exists(filepath))
{
xnode = null;
}
XmlDocument xdoc = null;
try
{
xdoc = new XmlDocument();
xdoc.Load(filepath);
xnode = xdoc.SelectSingleNode("descendant::" + menus);
到这一步数据都是没问题的啊
风之影子 2012-05-15
  • 打赏
  • 举报
回复
!IsPostBack了吗?
mabaolin 2012-05-15
  • 打赏
  • 举报
回复
另外看看xml文件头是否有xmlns属性。如果有需要加入manager控制。
XmlDocument xmldoc = new XmlDocument();
xmldoc.Load(@"c:\m.xml");
XmlNamespaceManager manager = new XmlNamespaceManager(xmldoc.NameTable);
manager.AddNamespace("xspf", "http://www.google.com/schemas/sitemap/0.84");
int i = xmldoc.SelectNodes("//xspf:url",manager).Count;


<?xml version="1.0" encoding="utf-8"?>
<urlset xmlns="http://www.google.com/schemas/sitemap/0.84">
<url>
<loc>http://www.hq.com/</loc>
<lastmod>2011-02-11</lastmod>
<priority>1.0</priority>
</url>
mabaolin 2012-05-15
  • 打赏
  • 举报
回复
错了:少了依据
XmlDocument doc = new XmlDocument();
doc.Load(this.cfgDir + "/IO_config.xml");

XmlElement root = doc.DocumentElement;
从root调用select方法
mabaolin 2012-05-15
  • 打赏
  • 举报
回复
看看这个行不
XmlDocument xmldoc = new XmlDocument();
xmldoc.Load(@"c:\m.xml");
xmldoc.SelectNodes("descendant::MenuItems");

110,534

社区成员

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

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

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