3

XML を長い間使用しておらず、XML 応答から有用な情報を抽出する必要があります。同じで名前が異なるタグが 2 つある場合

    <lst name = "stack">
       <str>Ola</str>
       <lst name = "overflow">
          <str>Hello</str>
       </lst>
     </lst>

name="overflow" のタグの内容を抽出するにはどうすればよいですか?

4

6 に答える 6

2

System.Xml.Linq名前空間を使用できます。

var xDoc = XDocument.Parse(xml);
var result = xDoc.Descendants()
    .Where(d => 
        d.Name == "lst" && 
        d.Attributes("name").FirstOrDefault()!=null &&
        d.Attributes("name").FirstOrDefault().Value == "overflow")
    .FirstOrDefault();
于 2013-08-27T10:07:08.247 に答える
2

これを開始してみてください:

XPathDocument docNav = new XPathDocument(pathName);
XPathNavigator nav = docNav.CreateNavigator();
XmlNamespaceManager ns = new XmlNamespaceManager(nav.NameTable);

string val =  nav.SelectSingleNode(@"/lst/lst[@name='overflow']/str")

これらは、単純な XPath ナビゲーションと .NET XML 解析に適したリソースです。

http://www.w3schools.com/xpath/

http://www.codeproject.com/Articles/52079/Using-XPathNavigator-in-C

于 2013-08-27T10:02:57.980 に答える
0

ユーザー Linq から xml

var xmlFile = XDocument.Load(someFile);
var query = from item in xmlFile.Descendants("childobject")
            where !String.IsNullOrEmpty(item.Attribute("using")
            select new 
            {
                AttributeValue = item.Attribute("using").Value
            };
于 2013-08-27T10:04:47.847 に答える