0

在下面的 xml 文件中:

    <SVCs>
         <SVC>
              <id>001</id>
              <request>Send SMS SVC 001 Request</request>
              <reposne>Send SMS SVC 001 Response</reposne>
         </SVC>
         <SVC>
               <id>002</id>
               <request>Send SMS SVC 002 Request</request>
               <reposne>Send SMS SVC 002 Response</reposne>
        </SVC>
    </SVCs>

我需要搜索 id say 002,并以纯文本形式获取相同的请求和响应。我正在使用 winforms C# .net 4.0。我如何实现这一目标?我正在使用 XMLDocument 命名空间来解析文档。

我对 XML 库真的很陌生,我认为这是基本问题之一。我真的用谷歌搜索了很多,但找不到如何通过搜索标签来获取内部文本。

4

4 回答 4

1

我会使用 linq2xml

XDocument xDoc = XDocument.Parse(xml);
var svc = xDoc.XPathSelectElement("//SVC[id='002']");

var req = svc.Element("request").Value;
var resp = svc.Element("reposne").Value;

或者

var svc = xDoc.Descendants("SVC")
              .First(s => s.Element("id").Value == "002");

PS:我保持相同的错字reposne

于 2012-09-14T06:50:06.483 回答
0

不知道我是否理解你的问题,但你得到这样的内部文字:

XmlReader subReader = _reader.ReadSubtree();
subReader.Read();
于 2012-09-14T06:47:40.247 回答
0

使用 linq!

  XElement xmldoc=   XElement.Load(new StringReader(@"<SVCs>
         <SVC>
              <id>001</id>
              <request>Send SMS SVC 001 Request</request>
              <reposne>Send SMS SVC 001 Response</reposne>
         </SVC>
         <SVC>
               <id>002</id>
               <request>Send SMS SVC 002 Request</request>
               <reposne>Send SMS SVC 002 Response</reposne>
        </SVC>
    </SVCs>"));




         var result = xmldoc.Elements("SVC").Where(e=>e.HasElements).Elements("id").Single(x=>x.Value=="002");
于 2012-09-14T06:53:13.143 回答
0

另一方面,您也可以使用 Linq2XML

var SVCs = XElement.Load("demoFile.xml");

var result = from svc in SVCs.Elements()
                where svc.Element("id").Value == "002"
                select svc;

foreach (var entry in result)
{
    Console.WriteLine(entry);
    Console.WriteLine(entry.Element("request").Value);
}
于 2012-09-14T06:55:35.520 回答