使用c#读取具有相同节点名称的子元素

时间:2017-01-04 19:32:38

标签: c# xml

我有一个包含同名节点的xml文件

vagrant up

控制器

<Test>
<testing>
    <testId>2233</testId>
    <name>frank</name>
    <machine>3</machine>
    <img>1.jpg</img>
    <img>5.jpg</img>
    <img>001.jpg</img>
    <img>100.jpg</img>
    <img>1125.jpg</img>
</testing>
</Test>

list img的值为空 任何建议赞赏

2 个答案:

答案 0 :(得分:1)

我认为问题出在

...
Image = imm.Elements("img").Select(img => new Images {
        Url = img.Element("img").ElementValueNull()
        }).ToList() 

因为img已经是<img>元素,但您查询它的子<img>元素。

将其更改为

Image = imm.Elements("img").Select(img => new Images {
        Url = img.ElementValueNull()
        }).ToList() 

答案 1 :(得分:0)

请尝试以下方法:

public ActionResult TestMachine(int id = 0)
{
    XDocument Xdoc = XDocument.Load("test.xml");
    var Test = Xdoc.Descendants("testing").Select
    (imm => new test
    {
        TestId = Convert.ToInt32(imm.Element("testId").Value),
        Name = imm.Element("name").Value,
        Machine = imm.Element("machine").Value,
        Image = imm.Elements("img").Select(img => new Images {
        Url = img.Value
        }).ToList() 
    }).Where(i=> i.TestId == id).FirstOrDefault();
    return View(test);
}