2017-04-12 31 views
0

我有以下XML: 我只需要讀取「ShortName」節點,但要讀取不同的字符串類型引用。 我如何引用源代碼並獲取短名稱的文本,然後對目標執行相同操作? XML包含多個元素,例如有效的什麼,我可以通過一個與這樣的代碼讀取一個: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查詢語法:

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;