2016-08-09 73 views
1

這是我的xml文件如何更改標籤名稱和使用LINQ到XML

<tag> 
    <ImageObject Color="BlackWhite" FileRef="12.gif" Format="GIF" Rendition="HTML" Type="Linedraw" /> 
    <ImageObject Color="BlackWhite" FileRef="32.gif" Format="GIF" Rendition="HTML" Type="Linedraw"/> 
    <ImageObject Color="BlackWhite" FileRef="3.gif" Format="GIF" Rendition="HTML" Type="Linedraw"/> 
</tag> 

,輸出的東西與此類似

<tag> 
    <img src="12.gif" /> 
    <img src="32.gif" /> 
    <img src="3.gif" /> 
</tag> 

到目前爲止,這是我的代碼獲得屬性。但我不能設置IMG的屬性,因爲我不知道如何檢索的fileref

XElement rootImg = XElement.Parse(xml string variable); 

IEnumerable<XElement> img = 
    from el in rootImg.Descendants("ImageObject").ToList() 
    where (string)el.Attribute("Format") != "" 
    select el; 

foreach (XElement el in img) 
{ 
    el.Name = "img"; 
    el.RemoveAttributes(); 
    el.SetAttributeValue("src", ""); 
} 

回答

3

有在這一點上沒有任何屬性的屬性 - 它去掉上面一行。相反,你可以使用下列內容:

foreach (XElement el in img) 
{ 
    var fileRef = el.Attribute("FileRef"); 
    el.Name = "img"; 
    el.RemoveAttributes(); 
    el.SetAttributeValue("src", fileRef.Value); 
} 
+0

謝謝。你的代碼工作 – codequery18

1

首先創建的XElement對象並解析XML文件,可枚舉(IMG)的第二帶賓語發現甲酸鹽,EL,現在寫的foreach循環從IMG(IEnumrable)獲得屬性和setAttributeValue .So最後你的代碼看起來像。

XElement rootImg = XElement.Parse(xml string variable); 

IEnumerable<XElement> img = 
    from el in rootImg.Descendants("ImageObject").ToList() 
    where (string)el.Attribute("Format") != "" 
    select el; 



foreach (XElement el in img) 
{ 
    var fileRef = el.Attribute("FileRef"); 
    el.Name = "img"; 
    el.RemoveAttributes(); 
    el.SetAttributeValue("src", fileRef.Value); 
}