1

我想传入一个 xpath 查询并返回我找到的值。我正在寻找一个属性的值。

_query = "//@RequestType";

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

如果我可以替换我的查询并从 nice 中获取值“yes”,那也很好。

<?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
       }
    }
   }
4

3 回答 3

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));
}
于 2011-04-26T17:32:40.523 回答
0

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

于 2011-04-26T17:38:33.460 回答
0

如果您在查询中返回“test”节点并且它包含一个名为“nice”的子节点,那么您需要从父“test”节点中选择“nice”子节点并返回它的 InnerText 以获得字符串“是”出来。

我不确定这是否能回答您的问题,因为我认为我没有完全遵循您的要求,但希望这会有所帮助

于 2011-04-26T17:12:20.853 回答