1

xpathクエリを渡して、見つけたものの値を返したいのですが。特に属性の値を探しています。

_query = "//@RequestType";

ノードを取り戻すことはできますが、文字列値を取得する方法がわかりません。type次のxmlでその属性を照会し、「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

クエリで「test」ノードを取得していて、「nice」という子ノードが含まれている場合は、親の「test」ノードから「nice」子ノードを選択し、InnerTextを返す必要があります。そこから文字列「yes」。

私はあなたの質問に完全には従わなかったと思うので、それがあなたの質問に答えるかどうかはわかりませんが、うまくいけばそれが役立つ

于 2011-04-26T17:12:20.853 に答える
0

XPathNavigatorにはValueプロパティがあり、現在のノードの値を文字列として返します。データのタイプがすでにわかっている場合は、ValueAsBoolean、ValueAsDateTimeなどを使用することもできます。

于 2011-04-26T17:38:33.460 に答える