【问题标题】:Find one attribute in XML File with linq.XML使用 linq.XML 在 XML 文件中查找一个属性
【发布时间】:2016-11-28 10:09:54
【问题描述】:

我想在我们的 XML-FIle 中找到一个属性的值。

例如,这里是我们的 XML 文档:

<PROJECT_DOCUMENTS>
   <DOCUMENT isFile="YES" isLink="YES" type="Risk Action List (combined)" path="path" showFile="" showFolder="YES" FilePath="" FolderPath="" />
   <DOCUMENT isFile="YES" isLink="NO" type="ASPICE-Action List" path="path" showFile="" showFolder="YES" FilePath="" FolderPath="path" />
</PROJECT_DOCUMENTS> 

如果类型是 ASPICE-Action List,我想要 path = " .... bla ..." 的值。

这里是我生成的代码:

 XElement elementToChange = (from c in getFileFromXML.Element("PROJECT_DOCUMENTS")
                                        .Elements("DOCUMENT")
                                        where("type"== "ASPICE-Action List")
                                        select c).Single().Element("path");

但我没有得到信息。我认为 type == Aspice-Action 列表不起作用。

谁能帮我解决我的问题;)

谢谢

【问题讨论】:

    标签: c# xml linq attributes


    【解决方案1】:

    如果您想获取path 属性值,您可以使用下一个代码,该代码使用Attribute() 方法操作元素的属性:

    var elementsToChange = from c in getFileFromXML.Element("PROJECT_DOCUMENTS").Elements("DOCUMENT")
                    where c.Attribute("type")?.Value == "ASPICE-Action List" )
                    select c.Attribute("path").Value;
    

    要检索整个元素,请使用下一个代码或将SingleOrDefault()FirstOrDefault() 添加到您的任务的末尾:

    var elementsToChange = from c in getFileFromXML.Element("PROJECT_DOCUMENTS").Elements("DOCUMENT")
                    where c.Attribute("type")?.Value == "ASPICE-Action List" )
                    select c;
    

    【讨论】:

      【解决方案2】:

      您可以尝试使用以下代码获得相同的效果:

      from c in getFileFromXML.Elements("DOCUMENT")
      where "ASPICE-Action List" == c.Attribute("type").Value
      select c;
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-12-24
        • 1970-01-01
        • 2012-07-22
        • 1970-01-01
        • 2018-01-05
        • 1970-01-01
        • 2012-02-05
        相关资源
        最近更新 更多