我有一个名为"ResourceData.xml"
的xml格式文件。
<?xml version="1.0" encoding="utf-8" ?>
<root>
<key name="customPageTitle">
<value>Publish Resources to Custom Page</value>
</key>
</root>
现在我想编写一个以键"name"
作为输入并返回其值元素数据的函数,在上面的情况下,如果我们传递键名{{1},它将返回"Publish Resources to Custom Page"
我认为将打开XML文件然后它会读取。
请建议!!
答案 0 :(得分:5)
请尝试以下代码:
public string GetXMLValue(string XML, string searchTerm)
{
XmlDocument doc = new XmlDocument();
doc.LoadXml(XML);
XmlNodeList nodes = doc.SelectNodes("root/key");
foreach (XmlNode node in nodes)
{
XmlAttributeCollection nodeAtt = node.Attributes;
if(nodeAtt["name"].Value.ToString() == searchTerm)
{
XmlDocument childNode = new XmlDocument();
childNode.LoadXml(node.OuterXml);
return childNode.SelectSingleNode("key/value").InnerText;
}
else
{
return "did not match any documents";
}
}
return "No key value pair found";
}
答案 1 :(得分:0)
将文件加载到XDocument中。用方法输入变量替换[input]。
var value = doc.Descendants("key")
.Where(k => k.Attribute("name").Value.Equals([input]))
.Select(e => e.Elements("value").Value)
.FirstOrDefault();
这是未经测试的代码,因此此代码段中可能存在错误。
答案 2 :(得分:0)
public static String GetViaName(String search, String xml)
{
var doc = XDocument.Parse(xml);
return (from c in doc.Descendants("key")
where ((String)c.Attribute("name")).Equals(search)
select (String)c.Element("value")).FirstOrDefault();
}
答案 3 :(得分:0)
return doc.Descendants("key")
.Where(c => ((String)c.Attribute("name")).Equals(search))
.Select(c => (String)c.Element("value"))
.FirstOrDefault()
.Trim();