从搜索字符串中获取XML元素文本框
本文关键字:元素 文本 XML 获取 搜索 字符串 | 更新日期: 2023-09-27 17:59:43
我有一个XML文件,它有多个条目,每个条目看起来像这样:
-<CRQ>
<ID>CRQ000000003314</ID>
<Status>1</Status>
<Summary>complete</Summary>
<Service>Server</Service>
<Impact>3000</Impact>
<Risk>2</Risk>
<Urgency>4000</Urgency>
<Class>4000</Class>
<Environment>1000</Environment>
<Trigger/>
<TriggerID>CP_00</TriggerID>
<Coordinator>user name</Coordinator>
<Desc>ticket description.</Desc>
</CRQ>
我在C#应用程序中有一个与id匹配的字符串,例如CRQ000000003314。当这个字符串在事件中匹配时,我如何加载XML,然后将id下面的元素(状态摘要等)返回到单独的文本框中?
您可以使用LINQ to XML
获取元素,如下所示:
var xmlDocument = XDocument.Load("path");
var element = xmlDocument
.Descendants("CRQ")
.FirstOrDefault(x => (string) x.Element("ID") == "CRQ000000003314");
if(element != null)
{
var status = (string)element.Element("Status");
// get other values and display them in the textbox
}
有几种方法可以做到这一点。您可以将Linq用于XML:http://msdn.microsoft.com/en-us/library/bb387061.aspx
或者您可以使用XMLReader:
http://msdn.microsoft.com/en-us/library/vstudio/system.xml.xmlreader
它只是使用C#进行的常见XML解析:
从XML 读取数据
这将是我的方法:
//Added to set up the sample
var xml = "<root><CRQ><ID>CRQ000000003314</ID><Status>1</Status><Summary>complete</Summary><Service>Server</Service> <Impact>3000</Impact><Risk>2</Risk><Urgency>4000</Urgency><Class>4000</Class><Environment>1000</Environment><Trigger/><TriggerID>CP_00</TriggerID><Coordinator>user name</Coordinator><Desc>ticket description.</Desc></CRQ></root>";
XElement root = XElement.Parse(xml);
//Coded Solution
var value = (from el in root.Elements("CRQ") where el.Element("ID").Value == "CRQ000000003314" select el).FirstOrDefault();
//Testing output
foreach(XElement el in value.Elements()){
Console.WriteLine("Element Name: {0} = {1}",el.Name, el.Value);
}