如何在C#中获取XML字符串中某个对象的值?
我有以下XML字符串:如何在C#中获取XML字符串中某个对象的值?,c#,xml,C#,Xml,我有以下XML字符串: <RESPONSE> <SINGLE> <KEY name="sitename"> <VALUE>Stackoverflow</VALUE> </KEY> <KEY name="username"> <VALUE>this value</VALUE>
<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));
到目前为止你在做什么?看看这个答案,通常你会尝试从一个具体的键中获取一个值,在这种情况下,你正在做相反的事情…你尝试过谷歌搜索吗…?我尝试过使用这个和这个代码,但它不起作用。我弄糊涂了,因为我必须得到一个