Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在C#中获取XML字符串中某个对象的值?_C#_Xml - Fatal编程技术网

如何在C#中获取XML字符串中某个对象的值?

如何在C#中获取XML字符串中某个对象的值?,c#,xml,C#,Xml,我有以下XML字符串: <RESPONSE> <SINGLE> <KEY name="sitename"> <VALUE>Stackoverflow</VALUE> </KEY> <KEY name="username"> <VALUE>this value</VALUE>

我有以下XML字符串:

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

但是我如何仅从名为“Username”的键中获取值呢?谢谢:)

您可能可以使用xpath来实现这一点。下面是一个XPath示例,它将提供一个名称与“sitename”匹配的节点:

您可以对此稍加修改,以查找具有“name”属性的所有节点或仅查找特定名称。有关如何使用XPath的更多示例,请参阅。下面是一段C#代码,它向您展示了如何使用此XPath(同样,您可以对所需的任何XPath进行泛化):

const string示例\u xml=“Stackoverflow this value”;
//装载
XmlDocument doc=新的XmlDocument();
doc.LoadXml(示例xml);
//使用XPath查询单个或多个节点,对该节点执行所需操作!
var desiredNode=doc.SelectSingleNode(//KEY[@name=\“sitename\”);

祝你好运

您可能可以使用xpath来实现这一点。下面是一个XPath示例,它将提供一个名称与“sitename”匹配的节点:

您可以对此稍加修改,以查找具有“name”属性的所有节点或仅查找特定名称。有关如何使用XPath的更多示例,请参阅。下面是一段C#代码,它向您展示了如何使用此XPath(同样,您可以对所需的任何XPath进行泛化):

const string示例\u xml=“Stackoverflow this value”;
//装载
XmlDocument doc=新的XmlDocument();
doc.LoadXml(示例xml);
//使用XPath查询单个或多个节点,对该节点执行所需操作!
var desiredNode=doc.SelectSingleNode(//KEY[@name=\“sitename\”);

祝你好运

您可能可以使用xpath来实现这一点。下面是一个XPath示例,它将提供一个名称与“sitename”匹配的节点:

您可以对此稍加修改,以查找具有“name”属性的所有节点或仅查找特定名称。有关如何使用XPath的更多示例,请参阅。下面是一段C#代码,它向您展示了如何使用此XPath(同样,您可以对所需的任何XPath进行泛化):

const string示例\u xml=“Stackoverflow this value”;
//装载
XmlDocument doc=新的XmlDocument();
doc.LoadXml(示例xml);
//使用XPath查询单个或多个节点,对该节点执行所需操作!
var desiredNode=doc.SelectSingleNode(//KEY[@name=\“sitename\”);

祝你好运

您可能可以使用xpath来实现这一点。下面是一个XPath示例,它将提供一个名称与“sitename”匹配的节点:

您可以对此稍加修改,以查找具有“name”属性的所有节点或仅查找特定名称。有关如何使用XPath的更多示例,请参阅。下面是一段C#代码,它向您展示了如何使用此XPath(同样,您可以对所需的任何XPath进行泛化):

const string示例\u xml=“Stackoverflow this value”;
//装载
XmlDocument doc=新的XmlDocument();
doc.LoadXml(示例xml);
//使用XPath查询单个或多个节点,对该节点执行所需操作!
var desiredNode=doc.SelectSingleNode(//KEY[@name=\“sitename\”);

祝你好运

> P>让您将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;
             }
          }

让您将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;
             }
          }

让您将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;
             }
          }

让您将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和where's being 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));
const string示例\u xml=“Stackoverflow this value”;
XDocument doc=XDocument.Parse(示例xml);
var keys=文件子体(“KEY”);
var userKeys=keys.Where(item=>item.Attribute(“name”).Value==“username”).ToList();
userKeys.ForEach(item=>Console.WriteLine(item.Value));

为了完整起见,这里有一个System.Xml.Linq版本,其中包括foreachs和where's being 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));
const string示例\u xml=“Stackoverflow this value”;
XDocument doc=XDocument.Parse(示例xml);
var keys=文件子体(“KEY”);
var userKeys=keys.Where(item=>item.Attribute(“name”).Value==“username”).ToList();
userKeys.ForEach(item=>Console.WriteLine(item.Value));

为了完整起见,这里有一个System.Xml.Linq版本,其中包括foreachs和where's being 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));
const string示例\u xml=“Stackoverflow this value”;
XDocument doc=XDocument.Parse(示例xml);
var keys=文件子体(“KEY”);
var userKeys=keys.Where(item=>item.Attribute(“name”).Value==“username”).ToList();
userKeys.ForEach(item=>Console.WriteLine(item.Value));

为了完整起见,这里有一个System.Xml.Linq版本,其中包括foreachs和where's being 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));
const string示例\u xml=“Stackoverflow this value”;
XDocument doc=XDocument.Parse(示例xml);
var keys=文件子体(“KEY”);
var userKeys=keys.Where(item=>item.Attribute(“name”).Value==“username”).ToList();
userKeys.ForEach(item=>Console.WriteLine(item.Value));

到目前为止你在做什么?看看这个答案,通常你会尝试从一个具体的键中获取一个值,在这种情况下,你正在做相反的事情…你尝试过谷歌搜索吗…?我尝试过使用这个和这个代码,但它不起作用。我弄糊涂了,因为我必须得到一个