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を検索し、プレーンテキストの形式で同じものの要求と応答を取得する必要があります。私はwinformsC#.net4.0で作業しています。どうすればこれを達成できますか?XMLDocument名前空間を使用してドキュメントを解析しています。

私はXMLライブラリを初めて使用しますが、これは基本的な質問の1つだと思います。私は本当にたくさんグーグルで検索しましたが、タグを検索して内部テキストを取得する方法を見つけることができませんでした。

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 に答える