我想使用vb代码在<channel>
标签内插入一个新元素。我的代码在 <channel>
和<rss>
结束标记end之后添加新项。
我已经尝试过了:
document.Root.Elements.First().Add(root)
但是没有用。
我的xml文件如下:
<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:media="http://search.yahoo.com/mrss/">
<channel>
</channel>
</rss>
这是我的代码:
FilePath = "h:\root\home\ka-001\www\site1\xmlfile1.xml"
Dim document As XDocument = New XDocument()
If File.Exists(FilePath) Then
document = XDocument.Load(FilePath)
Else
Label1.Text = "! file dosn't exist"
End If
If FileUpload1.HasFile = True Then
If FileUpload1.PostedFile.ContentLength <= size Then
Dim strPath As String
strPath = "~/files/" & FileUpload1.FileName
FileUpload1.SaveAs(MapPath(strPath))
End If
End If
attac1 = FileUpload1.FileName
Dim root As XElement = New XElement("item")
Dim title As XElement = New XElement("title", New XCData(TextBox3.Text))
Dim link As XElement = New XElement("link", TextBox6.Text)
root.Add(title, link)
document.Root.Add(root)
document.Save(FilePath)
Label1.Text = "! done"
答案 0 :(得分:0)
您不想将新元素添加到 root (即<rss>
元素)中,而是将其添加到<channel>
子元素中,因此您需要抢先-像这样(C#中的代码-应该很容易转换为VB.NET):
var channelNode = document.Root.Descendants("channel").FirstOrDefault();
然后,一旦有了该通道节点,就可以向其中添加新元素-我假设您要添加一个带有两个子元素的元素<item>
-对吗?
这可以通过以下代码完成:
// create new <item> element
XElement item = new XElement("item");
// add sub-element <title> to <item>
item.Add(new XElement("title", new XCData(TextBox3.Text)));
// add sub-element <link> to <item>
item.Add(new XElement("link", TextBox6.Text));
// and now add the <item> element inside the <channel> element
channelNode.Add(item);