急~帮我看看这个Xpath写的对不对?立刻结贴

zjj1211 2010-12-15 05:01:11

<?xml version="1.0" encoding="utf-8"?>
<Report xmlns="http://schemas.microsoft.com/sqlserver/reporting/2008" xmlns:rd="http://schemas.microsoft.com/SQLServer/reporting">
<Width>5in</Width>
<AutoRefresh>0</AutoRefresh>
<DataSources>
<DataSource Name="DataSource122">
<ConnectionProperties>
<DataProvider>XML</DataProvider>
<ConnectString>http://localhost:8080/cc/text.xml</ConnectString>
<IntegratedSecurity>true</IntegratedSecurity>
</ConnectionProperties>
<rd:SecurityType>Integrated</rd:SecurityType>
<rd:DataSourceID>a471bb3f-ebe3-4f59-b085-a52e03a04507</rd:DataSourceID>
</DataSource>
</DataSources>
</Report>


我想获取<ConnectString>http://localhost:8080/cc/text.xml</ConnectString>这个节点
我写的这个xpath对不对啊?怎么一直获取不到?
/Report/DataSources/DataSource/ConnectionProperties/ConnectString
...全文
87 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
zjj1211 2010-12-16
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 net_lover 的回复:]
名称空间是XML中常用的规范,这个你需要去学习
[/Quote]
老大能推荐点学习xml的资料吗?
zjj1211 2010-12-16
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 net_lover 的回复:]
要加名称空间。
如果xsl里面使用,需要定义名称空间

<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:eMeng="http://schemas.microsoft.com/sqlserver/reporting/2008" version="1……
[/Quote]
谢谢
孟子E章 2010-12-16
  • 打赏
  • 举报
回复
名称空间是XML中常用的规范,这个你需要去学习
孟子E章 2010-12-16
  • 打赏
  • 举报
回复
不能动就采用名称空间啊。上面代码都给你你了/。
zjj1211 2010-12-16
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 liuhuang007 的回复:]
后来仔细看了一下你的XML文档,其实不是XPath写得不对,是因为默认名称空间的问题。
xmlns= "http://schemas.microsoft.com/sqlserver/reporting/2008"
ConnectString的名称空间是"http://schemas.microsoft.com/sqlserver/reporting/2008"
你把这个名称空间去掉之后测试……
[/Quote]
恩 ,去掉命名空间就可以了,但是xml文件不能动啊。有没有别的什么办法?
孟子E章 2010-12-16
  • 打赏
  • 举报
回复
代码实现
参考
http://dotnet.aspx.cc/article/7b4c7a42-4cdf-40d1-b293-e86da109a34c/read.aspx
孟子E章 2010-12-16
  • 打赏
  • 举报
回复
要加名称空间。
如果xsl里面使用,需要定义名称空间

<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:eMeng="http://schemas.microsoft.com/sqlserver/reporting/2008" version="1.0">

xpath

xsl:for-each select="/eMeng:Report/eMeng:DataSources/eMeng:ConnectionProperties/..."等等
liuhuang007 2010-12-16
  • 打赏
  • 举报
回复
后来仔细看了一下你的XML文档,其实不是XPath写得不对,是因为默认名称空间的问题。
xmlns= "http://schemas.microsoft.com/sqlserver/reporting/2008"
ConnectString的名称空间是"http://schemas.microsoft.com/sqlserver/reporting/2008"
你把这个名称空间去掉之后测试,没有问题。

XmlDocument doc = new XmlDocument();
doc.Load("Test.xml");
XmlElement root = doc.DocumentElement;

XmlNamespaceManager xnm = new XmlNamespaceManager(doc.NameTable);
xnm.AddNamespace(string.Empty, "http://schemas.microsoft.com/sqlserver/reporting/2008");

XmlNode node = root.SelectSingleNode(".//ConnectString", xnm);


没有测通,方法就应该是这样的
zjj1211 2010-12-15
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 liuhuang007 的回复:]

引用 2 楼 zjj1211 的回复:
引用 1 楼 liuhuang007 的回复:

.//ConnectString
哥们不行啊

你能把你的代码发上来看看吗?

[/Quote]
XmlNode xdconn = myxd.SelectSingleNode(".//ConnectString");
liuhuang007 2010-12-15
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 zjj1211 的回复:]
引用 1 楼 liuhuang007 的回复:

.//ConnectString
哥们不行啊
[/Quote]
你能把你的代码发上来看看吗?
zjj1211 2010-12-15
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 liuhuang007 的回复:]

.//ConnectString
[/Quote]哥们不行啊
liuhuang007 2010-12-15
  • 打赏
  • 举报
回复
.//ConnectString

8,906

社区成员

发帖
与我相关
我的任务
社区描述
XML/XSL相关问题讨论专区
社区管理员
  • XML/XSL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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