הערה
הגישה לדף זה מחייבת הרשאה. באפשרותך לנסות להיכנס או לשנות מדריכי כתובות.
הגישה לדף זה מחייבת הרשאה. באפשרותך לנסות לשנות מדריכי כתובות.
Question
Thursday, July 19, 2018 4:39 PM
I'm trying to write a code to insert items in exist xml file ,I want the items in file to be like this:
<item>
<title><![CDATA[any title]]></title>
<link>http://any link</link>
<pubDate>any date</pubDate>
<guid isPermaLink="true">any link</guid>
<description><![CDATA[any description]]></description>
<media:credit role="author"><![CDATA[any author]]></media:credit>
<media:category><![CDATA[any category]]></media:category>
<media:content url="http://any link" height="266" width="127" />
<media:thumbnail url="http://any link" height="266" width="127" />
</item>
so I have write this code :
Dim FilePath As String
FilePath = "C:\Users\MONZER\Desktop\Karary Web Site\WebApplication1\XMLFile1.xml"
Dim document As New XDocument
If File.Exists(FilePath) Then
document = XDocument.Load(FilePath)
Else
Label1.Text = "not done"
End If
Dim root = New XElement("item")
Dim title = New XElement("title", "<![CDATA[" & TextBox3.Text & "]]>")
Dim link = New XElement("link", TextBox6.Text)
Dim pubDate = New XElement("pubDate", DateTime.Now.ToString("yyy/MM/dd HH:mm"))
Dim description = New XElement("description", TextBox5.Text)
Dim author = New XElement("media:credit",
New XAttribute("role", "author"),
New XAttribute("><![CDATA[", TextBox5.Text + "]]>"))
root.Add(title, link, pubDate, description, author)
document.Root.Add(root)
document.Save(FilePath)
Label1.Text = "done"
End Sub
**I got this error :**The ':' character, hexadecimal value 0x3A, cannot be included in a name.
All replies (3)
Thursday, July 19, 2018 5:16 PM
You can't name an element <media:cateogry> etc. The error is telling you that is not a valid character in an XML element name.
Why not simply create a <media> element and then put <category>, <content>, and <thumbnail> as child elements?
Another option would be to replace the colon with a valid character such as underscore.
Reed Kimble - "When you do things right, people won't be sure you've done anything at all"
Thursday, July 19, 2018 5:19 PM
Oh sorry, those names already exist in the file. There must a namespace in use that isn't shown. You'll need to add the namespace to the document and set it on the element through an attribute.
-EDIT-
here is some guidance... though the examples are in C# it should be easy enough to understand the equivalent in VB:
Reed Kimble - "When you do things right, people won't be sure you've done anything at all"
Thursday, July 19, 2018 7:00 PM
Check the next method too:
Dim d As New XmlDocument
d.Load("XMLFile1.xml")
Using w As XmlWriter = d.CreateNavigator().SelectSingleNode("/*").AppendChild()
w.WriteStartElement("item")
w.WriteElementString("title", "some title")
w.WriteStartElement("credit", "some namespace")
w.WriteAttributeString("role", "author")
w.WriteString("some author")
w.WriteEndElement()
' . . .
w.WriteEndElement()
End Using
d.Save("XMLFile1.xml")
It assumes that the root node of the existing (loaded) document already contains the corresponding definition of "media" namespace, such as:
<?xml version="1.0" encoding="utf-8"?>
<items xmlns:media="some namespace">
. . .
</items>
See the XmlWriter class for details.