簡體   English   中英

如何使用XPath在C#中獲取屬性的值?

[英]How do I use XPath to get the value of an attribute in c#?

我想傳遞一個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
       }
    }
   }

我的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));
}

如果您要在查詢中重新獲得“測試”節點,並且它包含一個名為“ nice”的子節點,則需要從父“測試”節點中選擇“ nice”子節點並返回其InnerText以獲得字符串“是”。

我不確定是否能回答您的問題,因為我認為我沒有完全按照您的要求進行,但希望能對您有所幫助

XPathNavigator具有Value屬性,該屬性將以字符串形式返回當前節點的值。 如果您已經知道數據類型,則也可以使用ValueAsBoolean,ValueAsDateTime等。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM