2016-11-23 28 views
-2

我有下面的xml.How我可以在數組中獲得FileTypeId,EngName,JpnName如果我有FolderName。例如,如果我有Test2,我想使用XDocument類在字符串數組中獲得2,EngName2,JpnName2。使用XDocument類讀取數組中的節點值

<Row> 
    <FolderName>Test1</FolderName> 
    <FileTypeId>1</FileTypeId> 
    <EngName>EngName1</EngName> 
    <JpnName>JpnName1</JpnName> 
    </Row> 
    <Row> 
    <FolderName>Test2</FolderName> 
    <FileTypeId>2</FileTypeId> 
    <EngName>EngName2</EngName> 
    <JpnName>JpnName2</JpnName> 
    </Row> 
    <Row> 
    <FolderName>Test3</FolderName> 
    <FileTypeId>3</FileTypeId> 
    <EngName>EngName3</EngName> 
    <JpnName>JpnName3</JpnName> 
    </Row> 

回答

0

嘗試使用LINQ:

XDocument xdoc = XDocument.Load("input.xml"); 

string yourCondition = "Test2"; 
var query = from elem in xdoc.Root.Elements("Row") 
      where elem.Element("FolderName").Value == yourCondition 
      select new 
      { 
       FileTypeId = elem.Element("FileTypeId").Value, 
       EngName = elem.Element("EngName").Value, 
       JpnName = elem.Element("JpnName").Value 
      }; 

if (query.Count() > 0) 
{ 
    var result = query.First(); 

    // You can access the fields through this: 
    string engName = result.EngName; 
    string fileTypeId = result.FileTypeId; 
    string jpnName = result.JpnName; 
} 

而作爲 「SNN BRN」 指出的那樣,你需要一個根元素在XML。

0

你需要主根,

var doc = XDocument.Load("data.xml"); 


<Rows> 
    <Row> 
    <FolderName>Test1</FolderName> 
    <FileTypeId>1</FileTypeId> 
    <EngName>EngName1</EngName> 
    <JpnName>JpnName1</JpnName> 
    </Row> 
    <Row> 
    <FolderName>Test2</FolderName> 
    <FileTypeId>2</FileTypeId> 
    <EngName>EngName2</EngName> 
    <JpnName>JpnName2</JpnName> 
    </Row> 
    <Row> 
    <FolderName>Test3</FolderName> 
    <FileTypeId>3</FileTypeId> 
    <EngName>EngName3</EngName> 
    <JpnName>JpnName3</JpnName> 
    </Row> 
</Rows>