求教XML相关问题,谢谢!

sinomac 2016-08-11 09:43:00
这个是在oschina上找的一个类库

/*
源码己托管:http://git.oschina.net/kuiyu/dotnetcodes
*/

/// <summary>
/// 读取指定路径和节点的属性值
/// </summary>
/// <param name="path">路径</param>
/// <param name="node">节点</param>
/// <param name="attribute">属性名,非空时返回该属性值,否则返回串联值</param>
/// 使用示列:
/// XMLProsess.Read(path, "/Node", "")
/// XMLProsess.Read(path, "/Node/Element[@Attribute='Name']", "Attribute")
public static string Read(string path, string node, string attribute)
{
string value = "";
try
{
XmlDocument doc = XMLLoad(path);
XmlNode xn = doc.SelectSingleNode(node);//测试运行到这里时,xn为null,然后就报错,未将对象引入
value = (attribute.Equals("") ? xn.InnerText : xn.Attributes[attribute].Value);
}
catch { }
return value;
}

调用的地方
string xmlFilePath = AppDomain.CurrentDomain.BaseDirectory + "Config.xml";
/// 使用示列:
/// XMLProsess.Read(path, "/Node", "")
/// XMLProsess.Read(path, "/Node/Element[@Attribute='Name']", "Attribute")
XMLProcess.Read(xmlFilePath, "/Client/Net[@Server]", "测试地址");
...全文
162 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
摇撼大地 2016-08-12
  • 打赏
  • 举报
回复
xpath已经过时了吧。 反正我是不打算用xpath了。页不打算学了。 用Linq to XML,非常简单。学习Linq,然后就可以了。 XElement一个类搞定所有xml。
我叫小菜菜 2016-08-12
  • 打赏
  • 举报
回复
先测试一下xpath吧,传进去的节点路径不正确,怎么调试都是白费的,学习并使用正确的xpath才是解决问题的办法
我叫小菜菜 2016-08-12
  • 打赏
  • 举报
回复
引用 5 楼 sinomac 的回复:
[quote=引用 3 楼 wddw1986 的回复:] 自己调试看看xmlFilePath是什么值,现在的人不知道怎么搞的,也不会调试,出问题就上网来问。
大哥,先看清楚问题先,不是我不调试,xmlFilePath值是没错的。XML的绝对路径。 我的问题是这里出错XmlNode xn = doc.SelectSingleNode(node);//测试运行到这里时,xn为null,[/quote]
引用 1 楼 sinomac 的回复:
<?xml version="1.0" standalone="yes"?>
<Client>
  <Net>
    <Server ServerName="测试地址" ServerAddress="xsw.meibu.net" ServerPort="5100" />
    <Server ServerName="测试ip" ServerAddress="127.0.0.1" ServerPort="5100" />
  </Net>
</Client>
忘记贴XML文件了,这里补上。
-------------------------------------- "/Client/Net[@Server]" 这个的意思是:查找查找Client节点下有一个属性名称为Server的Net节点,对应xml格式是 <Client> <Net Server=""> </Net> </Client> /title[@lang] 选取拥有名为 lang 的属性的 title 元素。 http://www.w3school.com.cn/xpath/xpath_syntax.asp
sinomac 2016-08-12
  • 打赏
  • 举报
回复
引用 3 楼 wddw1986 的回复:
自己调试看看xmlFilePath是什么值,现在的人不知道怎么搞的,也不会调试,出问题就上网来问。
大哥,先看清楚问题先,不是我不调试,xmlFilePath值是没错的。XML的绝对路径。 我的问题是这里出错XmlNode xn = doc.SelectSingleNode(node);//测试运行到这里时,xn为null,
我叫小菜菜 2016-08-12
  • 打赏
  • 举报
回复
引用 1 楼 sinomac 的回复:
<?xml version="1.0" standalone="yes"?>
<Client>
  <Net>
    <Server ServerName="测试地址" ServerAddress="xsw.meibu.net" ServerPort="5100" />
    <Server ServerName="测试ip" ServerAddress="127.0.0.1" ServerPort="5100" />
  </Net>
</Client>
忘记贴XML文件了,这里补上。
XMLProsess.Read(path, "/Node/Element[@Attribute='Name']", "Attribute") XMLProcess.Read(xmlFilePath, "/Client/Net/Server[0]", "测试地址"); XML元素和属性没有弄清楚。Server是元素,ServerName="测试ip" ServerAddress="127.0.0.1" ServerPort="5100"是Server的三个属性。 原函数的定义有歧义,个人觉得应该是: public static string Read(string xmlFilePath, string nodeXPath, string nodeAttrName)
cheng2005 2016-08-12
  • 打赏
  • 举报
回复
自己调试看看xmlFilePath是什么值,现在的人不知道怎么搞的,也不会调试,出问题就上网来问。
Poopaye 2016-08-11
  • 打赏
  • 举报
回复
你有没有发现还忘了什么?
sinomac 2016-08-11
  • 打赏
  • 举报
回复
<?xml version="1.0" standalone="yes"?>
<Client>
  <Net>
    <Server ServerName="测试地址" ServerAddress="xsw.meibu.net" ServerPort="5100" />
    <Server ServerName="测试ip" ServerAddress="127.0.0.1" ServerPort="5100" />
  </Net>
</Client>
忘记贴XML文件了,这里补上。

110,499

社区成员

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

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

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