XML如下:
<Report>
<ReportParameters>
<ReportParameter Name="SQLConnectionString">
<DataType>String</DataType>
<Nullable>true</Nullable>
<AllowBlank>true</AllowBlank>
<Prompt>Sql Connection String</Prompt>
<Hidden>true</Hidden>
</ReportParameter>
<ReportParameter Name="Type">
<AllowBlank>true</AllowBlank>
<Prompt>Accounting Run Type</Prompt>
<ValidValues>
<ParameterValues>
<ParameterValue>
<Value>ClosedPeriod</Value>
</ParameterValue>
<ParameterValue>
<Value>Books</Value>
</ParameterValue>
</ParameterValues>
</ValidValues>
</ReportParameter>
<ReportParameters>
<Report>我想找到<ReportParameter Name="Type">下面的<Value>Books</Value>,我的想法是:
/rpt:Report/rpt:ReportParameters/rpt:ReportParameter[@Name="Type"]/rpt:ValidValues/rpt:ParameterValues/rpt:ParameterValue[Value="Books"]可是这样查不到结果.哪位大侠能帮帮忙?
<Report>
<ReportParameters>
<ReportParameter Name="SQLConnectionString">
<DataType>String</DataType>
<Nullable>true</Nullable>
<AllowBlank>true</AllowBlank>
<Prompt>Sql Connection String</Prompt>
<Hidden>true</Hidden>
</ReportParameter>
<ReportParameter Name="Type">
<AllowBlank>true</AllowBlank>
<Prompt>Accounting Run Type</Prompt>
<ValidValues>
<ParameterValues>
<ParameterValue>
<Value>ClosedPeriod</Value>
</ParameterValue>
<ParameterValue>
<Value>Books</Value>
</ParameterValue>
</ParameterValues>
</ValidValues>
</ReportParameter>
<ReportParameters>
<Report>我想找到<ReportParameter Name="Type">下面的<Value>Books</Value>,我的想法是:
/rpt:Report/rpt:ReportParameters/rpt:ReportParameter[@Name="Type"]/rpt:ValidValues/rpt:ParameterValues/rpt:ParameterValue[Value="Books"]可是这样查不到结果.哪位大侠能帮帮忙?
XmlDocument doc = new XmlDocument();
doc.Load(xmlFile);
XmlNamespaceManager nsmgr = new XmlNamespaceManager(doc.NameTable);
nsmgr.AddNamespace("rpt", _NameSpace);
XmlNodeList nodes = doc.SelectNodes(xPath, nsmgr);
if (nodes != null && nodes.Count > 0)
{
return true;
}
else
{
return false;
}
string xml = @"<Report>
<ReportParameters>
<ReportParameter Name='SQLConnectionString'>
<DataType>String </DataType>
<Nullable>true </Nullable>
<AllowBlank>true </AllowBlank>
<Prompt>Sql Connection String </Prompt>
<Hidden>true </Hidden>
</ReportParameter>
<ReportParameter Name='Type'>
<AllowBlank>true </AllowBlank>
<Prompt>Accounting Run Type </Prompt>
<ValidValues>
<ParameterValues>
<ParameterValue>
<Value>ClosedPeriod </Value>
</ParameterValue>
<ParameterValue>
<Value>Books</Value>
</ParameterValue>
</ParameterValues>
</ValidValues>
</ReportParameter>
</ReportParameters>
</Report>
"; XmlDocument xmld = new XmlDocument();
xmld.LoadXml(xml);
XmlNode node = xmld.SelectSingleNode(@".//ReportParameter[@Name='Type']/ValidValues/ParameterValues/ParameterValue[Value='Books']/Value");
还有 </ReportParameter>
<ReportParameters>
<Report>
xml都是错的,Value节点Books有空格
string xml=@"<Report><ReportParameters><ReportParameter Name=""SQLConnectionString""><DataType>String </DataType><Nullable>true </Nullable><AllowBlank>true </AllowBlank><Prompt>Sql Connection String </Prompt><Hidden>true </Hidden></ReportParameter><ReportParameter Name=""Type""><AllowBlank>true </AllowBlank><Prompt>Accounting Run Type </Prompt><ValidValues><ParameterValues><ParameterValue><Value>ClosedPeriod </Value></ParameterValue><ParameterValue><Value>Books </Value></ParameterValue></ParameterValues></ValidValues></ReportParameter></ReportParameters></Report>";
XmlDocument xDoc = new XmlDocument();
xDoc.LoadXml(xml);
XmlNodeList _List = xDoc.SelectNodes("Report/ReportParameters/ReportParameter[@Name='Type']/ValidValues/ParameterValues/ParameterValue/Value[.='Books ']");
string strValue = _List[0].OuterXml;//取到的就是<Value>Books </Value>
所以zgke才写成:/Value[.='Books ']..看到了吗..Books后面有空格..和你的XML中一样..
<Report> 没有/这个,上面的xpath应该都可以的,自己测试一下
你不要加命名空间,因为你xml本身没有命名空间
sorry,我XMl里面有命名空间,在帖子里面的是为了让大家看着方便临时去掉的