【问题标题】:xml parsing in winforms get plain textwinforms中的xml解析得到纯文本
【发布时间】:2012-09-14 06:39:46
【问题描述】:

在下面的 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 库真的很陌生,我认为这是基本问题之一。我确实google了很多,但找不到如何通过搜索标签来获取内部文本。

【问题讨论】:

    标签: c# .net xml winforms


    【解决方案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

    【讨论】:

      【解决方案2】:

      不确定我是否正确理解了您的问题,但您得到的内部文字如下:

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

      【讨论】:

        【解决方案3】:

        使用 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");
        

        【讨论】:

          【解决方案4】:

          另一方面,你也可以使用 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);
          }
          

          【讨论】:

            猜你喜欢
            • 2013-07-28
            • 1970-01-01
            • 2012-09-10
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2011-04-08
            • 2023-04-05
            • 1970-01-01
            相关资源
            最近更新 更多