我想传递一个xpath查询并返回我找到的值。 我正在寻找属性的值。
_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
}
}
}
答案 0 :(得分: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));
}
答案 1 :(得分:0)
如果您在查询中返回“test”节点并且它包含一个名为“nice”的子节点,那么您需要从父“test”节点中选择“nice”子节点并按顺序返回它的InnerText从中获取字符串“是”。
我不确定是否回答了你的问题,因为我认为我并没有完全按照你的要求行事,但希望有所帮助
答案 2 :(得分:0)
XPathNavigator有一个Value属性,它将以字符串形式返回当前节点的值。如果您已经知道数据的类型,也可以使用ValueAsBoolean,ValueAsDateTime等。