2017-04-12 11 views
0

私は以下のXMLを持っています: "ShortName"ノードだけを読む必要がありますが、別の文字列型の参照にする必要があります。 ソースを参照してショートネームのテキストを取得し、ターゲットと同じようにするにはどうすればよいですか?c#XMLノードを読み込んで文字列型参照

valid = TMElement.GetElementsByTagName("Valid")[0].InnerText; 

<GlobalInfo> 
<LanguagePair> 
    <Source> 
    <ShortName>some data</ShortName> 
    </Source> 
    <Target> 
    <ShortName>some data</ShortName> 
    </Target> 
</LanguagePair> 
<Valid>true</Valid> 

答えて

2

あなたはこれを試すことができます:

string xml = @"<GlobalInfo> 
       <LanguagePair> 
        <Source> 
        <ShortName>some data source</ShortName> 
        </Source> 
        <Target> 
         <ShortName>some data target</ShortName> 
        </Target> 
       </LanguagePair> 
       <Valid>true</Valid> 
       </GlobalInfo>"; 

XDocument xmlDoc = XDocument.Parse(xml); 

LINQクエリ構文:

XMLは、私はこのようなコードを一つずつ読み取ることができますどのような有効なのような多くの要素が含まれています
string[] someDataSource = 
    (from data in xmlDoc.Descendants("Source") 
    select data.Element("ShortName").Value).ToArray(); 

string[] someDataTarget = (from data in xmlDoc.Descendants("Target") 
    select data.Element("ShortName").Value).ToArray(); 

または方法の構文:

string[] someDataSource2 = xmlDoc.Descendants("Source").Select(x => x.Element("ShortName").Value).ToArray(); 
string[] someDataTarget2 = xmlDoc.Descendants("Target").Select(x => x.Element("ShortName").Value).ToArray(); 
0

これを試してください。インポートusing System.Xml;

 XmlDocument xdoc = new XmlDocument(); 
     // if xml coming via string 
     string myXml = "<GlobalInfo><LanguagePair><Source><ShortName>some data</ShortName></Source><Target><ShortName>some data</ShortName></Target></LanguagePair></GlobalInfo>"; 
     xdoc.LoadXml(myXml); 

     string xpath = "GlobalInfo/LanguagePair";//specify path 
     var nodes = xdoc.SelectNodes(xpath); 

     foreach (XmlNode childrenNode in nodes) 
     { 
      for (int i = 0; i < childrenNode.ChildNodes.Count; i++) { 
       HttpContext.Current.Response.Write(childrenNode.ChildNodes[i].InnerText); 
      } 
     } 
0

ありがとう、皆さん。 これは私よりも簡単だったようです。最後に、自分の解決策を見つけました。 レコードのみのため、ここに投稿します:

string source = TMElement.SelectSingleNode("LanguagePair/Source/ShortName").InnerText; 
string target = TMElement.SelectSingleNode("LanguagePair/Target/ShortName").InnerText; 
関連する問題