从搜索字符串中获取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下面的元素(状态摘要等)返回到单独的文本框中?

从搜索字符串中获取XML元素文本框

您可以使用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);
}