2011-04-26 87 views
1

我想传入一个xpath查询并返回我找到的值。 我正在寻找特定的属性值。如何使用XPath获取c#中属性的值?

_query = "//@RequestType"; 

我可以返回节点,但我不知道如何从中获取字符串值。 我想查询下面的xml的type属性,并获得“xpath”。

这也将是很好,如果我可以只是替换我的查询,也从好的价值“是”回来。

<?xml version="1.0" ?> 
<test type="xpath"> 
    <nice>yes</nice> 
</test> 

C#

public string Locate(string message) 
     { 
    using (var stream = new MemoryStream(Encoding.GetBytes(message))) 
    { 
     var doc = new XPathDocument(stream); 
     var nav = doc.CreateNavigator(); 
     var result = nav.Select(_query); 
     if (result != null) 
     { 
      return result 
     } 
    } 
    } 

回答

1

我的XPath是弱在最好的,但尝试以下方法:

var doc = new XPathDocument(stream); 
var nav = doc.CreateNavigator();  
foreach (XPathNavigator test in nav.Select("test")) 
{ 
    string type = test.SelectSingleNode("@type").Value; 
    string nice = test.SelectSingleNode("nice").Value; 
    Console.WriteLine(string.Format("Type: {0} - Nice: {1}", type, nice)); 
} 
0

如果你所得到的“测试”节点回到您的查询,它包含一个名为“好”,那么你需要选择从“好”子节点的子节点父节点“测试”节点并返回它的InnerText以便从中获得字符串“是”。

我不知道该回答你的问题,因为我不认为我完全跟着你在问什么,但希望这有助于

0

XPathNavigator有一个Value属性,它将以字符串的形式返回当前节点的值。如果您已经知道数据的类型,您还可以使用ValueAsBoolean,ValueAsDateTime等。