簡體   English   中英

使用C#在XML中創建標簽

[英]Create tag in XML with C#

我有一個非常令人沮喪的問題,我希望這實際上是非常簡單的事情。 如果我在XML文件中的術語錯誤,請提前道歉。

基本上,我有一個相當簡單的XML文件,這是一個節點的摘錄:

<Attr num="108" name="Title" desc="The title of this file." type="s" ord="1" value="Test Title">

我可以很容易地讀寫節點的值鍵,但前提是該值鍵存在。

我可以使用以下代碼將值寫回到文件中:

XmlNode node = xmlDoc.SelectSingleNode("//ma:Attr[@name='Title']/@value", ns);
node.Value = partname.Text;
xmlDoc.Save(sympath);

但是,如果XML文件具有正確名稱的節點,但沒有值鍵,則它將失敗。 例如,在某些文件中,XML如下所示:

<Attr num="108" name="Title" desc="The title of this file." type="s" ord="1">

因此,我要繞圈走,只是嘗試將value="something"添加到該節點(如果尚不存在)。 有沒有辦法做到這一點? 我可以添加子元素,但是我只想在該字符串中添加值!

我嘗試過尋找答案,但是所有其他類似的問題似乎都與添加或修改子元素有關。

謝謝,
安德魯

實際上,僅XmlElement.SetAttribute()可以完成這項工作:

var node = (XmlElement)xmlDoc.SelectSingleNode("//ma:Attr[@name='Title']", ns);
node.SetAttribute("value", partname.Text);

選擇父元素而不是屬性,檢查value屬性是否存在於該元素中並采取相應的措施,即添加屬性或僅更新值:

var node = (XmlElement)xmlDoc.SelectSingleNode("//ma:Attr[@name='Title']", ns);
var attr = node.Attributes["value"];
if(attr != null)
{
    attr.Value = partname.Text;
}   
else 
{
    node.SetAttribute("value", partname.Text);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM