winforms中的xml解析获得纯文本

时间:2012-09-14 06:39:46

标签: c# .net xml winforms

在下面的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说002,并以纯文本的形式获取相同的请求和响应。我在winforms C#.net 4.0工作。我如何实现这一目标? 我正在使用XMLDocument命名空间来解析文档。

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

4 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

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

XmlReader subReader = _reader.ReadSubtree();
subReader.Read();

答案 2 :(得分: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");

答案 3 :(得分: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);
}