Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用XDocument类读取数组中的节点值_C# - Fatal编程技术网

C# 使用XDocument类读取数组中的节点值

C# 使用XDocument类读取数组中的节点值,c#,C#,我有下面的xml。如果我有FolderName,如何在数组中获取FileTypeId、EngName、JpnName。对于eample,如果我有Test2,我希望使用XDocument类在字符串数组中获取2,EngName2,JpnName2 <Row> <FolderName>Test1</FolderName> <FileTypeId>1</FileTypeId> <EngName>EngName

我有下面的xml。如果我有FolderName,如何在数组中获取FileTypeId、EngName、JpnName。对于eample,如果我有Test2,我希望使用XDocument类在字符串数组中获取2,EngName2,JpnName2

<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>

测试1
1
英语名称1
JpnName1
测试2
2
英语名称2
JpnName2
测试3
三
英语名称3
JpnName3
您需要主根目录

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>
var doc=XDocument.Load(“data.xml”);
测试1
1
英语名称1
JpnName1
测试2
2
英语名称2
JpnName2
测试3
三
英语名称3
JpnName3
尝试使用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;
}
正如“SNNBRN”所指出的,xml中需要一个根元素