簡體   English   中英

如何在C#中獲取XML字符串中某個對象的值?

[英]How to get value of some object in XML string in C#?

我有這個XML字符串:

<RESPONSE>
    <SINGLE>
        <KEY name="sitename">
            <VALUE>Stackoverflow</VALUE>
        </KEY>
        <KEY name="username">
            <VALUE>this value</VALUE>
        </KEY>
    </SINGLE>
</RESPONSE>

如何從名稱為“ username”的鍵中獲取值? 我想在代碼中獲取“ this value”的值。 我嘗試反序列化和任何其他代碼,但是它不起作用。 請幫助我,謝謝:D

編輯:

我嘗試使用此代碼:

XDocument doc = XDocument.Load( "myXML.xml" );

var keys = doc.Descendants( "KEY" );

foreach ( var VALUE in keys )
{
    Console.WriteLine( VALUE.Value );
}

但是,我如何僅從名為“ Username”的KEY獲得值? 謝謝 :))

您可能可以使用xpath來執行此操作。 以下是示例XPath,它將為節點提供名稱與“ sitename”匹配的名稱:

//KEY[@name="sitename"]

您可以對此稍作修改,以查找具有“名稱”屬性的所有節點,或者僅查找特定名稱。 有關如何使用XPath的更多示例,請參見XPath的MSDN站點 以下是C#代碼段,向您展示如何使用此XPath(同樣,您可以泛化所需的XPath):

const string example_xml = "<RESPONSE> <SINGLE> <KEY name=\"sitename\"> <VALUE>Stackoverflow</VALUE> </KEY> <KEY name=\"username\"> <VALUE>this value</VALUE> </KEY> </SINGLE> </RESPONSE>";

// load
XmlDocument doc = new XmlDocument();
doc.LoadXml(example_xml);

// Query single or multiple nodes using the XPath, do what you want with this node!
var desiredNode = doc.SelectSingleNode("//KEY[@name=\"sitename\"]");

祝你好運!

讓我們將您的xml文檔視為XYZ.xml,如果您使用的是C#,則可以嘗試下面的代碼,下面僅是示例

       XmlDocument Doc = new XmlDocument();
        Doc.Load(Server.MapPath(".../xyz.xml"));
         XmlNodeList itemList = Doc.DocumentElement.SelectNodes("KEY");
         foreach (XmlNode currNode in itemList)
         {
             string name = string.Empty; 
             XmlNode item = currNode.SelectSingleNode("KEY");
             if(currNode["name"].InnerText == "username")//if you are aware of key name, use this       condition
             {
               name = item.Attributes["name"].Value.ToString(); // or currNode["name"].InnerText;
             }
          }

為了完整起見,這里是System.Xml.Linq版本,其中包含foreach,在哪里也可以找到System.Linq。 這基本上是發問者的嘗試,並根據屬性在哪里進行過濾。

const string example_xml = "<RESPONSE> <SINGLE> <KEY name=\"sitename\"> <VALUE>Stackoverflow</VALUE> </KEY> <KEY name=\"username\"> <VALUE>this value</VALUE> </KEY> </SINGLE> </RESPONSE>";

XDocument doc = XDocument.Parse(example_xml);
var keys = doc.Descendants("KEY");
var userKeys = keys.Where(item => item.Attribute("name").Value == "username").ToList();
userKeys.ForEach(item => Console.WriteLine(item.Value));

暫無
暫無

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

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