2017-05-31 3 views
0

私はこのような結果を得たいと思います。XDocumentからのXElement解析は、以下のように繰り返します。

// Boo1 
// Boo2 
// Boo3 
// .... 
// .. 
// . 

ここフローム...

//<xliff xmlns:sdl="http://sdl.com/FileTypes/SdlXliff/1.0" xmlns="urn:oasis:names:tc:xliff:document:1.2" version="1.2" sdl: version="1.0"> 
// <sdl:seg-defs> 
//  <sdl:seg id="1" conf="Translated"> 
//   <sdl:prev-origin origin="source"> 
//    <sdl:prev-origin origin="source"> 
//     <sdl:prev-origin origin="tm" percent="99"> 
//      <sdl:prev-origin/> 
//      <sdl:value key="Hash">Foo1</sdl:value> 
//      <sdl:value key="Created">Boo1</sdl:value> 
//... 
//.. 
//. 

私はそれが失敗し、次のように試みたがきました。続き

string myResult = ""; 
XDocument myDoc = XDocument.Load(myPath); 
XNamespace myNS = "http://sdl.com/FileTypes/SdlXliff/1.0"; 
foreach (var x in myDoc.Descendants(myNS + "seg-defs")) 
    myResult += x.Value.ToString() + "\n"; 
MessageBox.Show(myResult); 

は私が望んでいない..です

// Foo1Boo1 
// Foo2Boo2 
// .... 
// .. 
// . 

ヘルプしてください。

おかげ

答えて

1

は、次の試してみてください。

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Xml; 
using System.Xml.Linq; 

namespace ConsoleApplication1 
{ 
    class Program 
    { 
     const string FILENAME = @"c:\temp\test.xml"; 
     static void Main(string[] args) 
     { 
      XDocument doc = XDocument.Load(FILENAME); 

      List<XElement> segments = doc.Descendants().Where(x => x.Name.LocalName == "seg").ToList(); 

      List<XElement> created = segments.Descendants().Where(x => (x.Name.LocalName == "value") && ((string)x.Attribute("key") == "Created")).ToList(); 

      string results = string.Join("\n", created.Select(x => (string)x)); 
     } 
    } 
} 
+0

ウー。うまく動作します。ありがとう!!! – Jason

関連する問題