在下面的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了很多,但找不到如何通过搜索标签来获取内部文本。
答案 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);
}