XML写作和阅读 [英] XML Writing and Reading

查看:66
本文介绍了XML写作和阅读的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我使用以下代码写入XML文件


myXmlTextWriter.Formatting = System.Xml.Formatting.Indente

myXmlTextWriter.WriteStartElement( CPViewer

myXmlTextWriter.WriteElementString(" Height",InputBoxHeight

myXmlTextWriter.WriteElementString(" Width",InputBoxWidth

'' myXmlTextWriter.WriteElementString(" Background",(OpenFileDialog1.FileName)

myXmlTextWriter.WriteElementString(" label1.Top",label1.Top

myXmlTextWriter.WriteElementString(" label1.Left",label1.Left

myXmlTextWriter.WriteElementString(" label1.Height",label1.Height

myXmlTextWriter.WriteElementString(" label1.Width",label1 .Width

myXmlTextWriter.WriteEndElement(

myXmlTextWriter.Flush(

myXmlTextWriter.Close(


)这是XML输出


< CPViewer>< Height&g吨; 600℃; /高度><宽度> 800℃; /宽度>< label1.Top> 200℃; /label1.Top>< label1.Left> 152< /label1.Left>< label1.Height> 23℃; /label1.Height><label1.Width>100</label1.Width></CPViewer


以下是读者的代码


DataSet1.ReadXml(" C:\ CPViewer\LD.xml"

Me.DataBindings.Add(New Binding(" Height",DataSet1," CPViewer.Height" )

Me.DataBindings.Add(New Binding(" Width",DataSet1," CPViewer.Width")

Me.DataBindings.Add(New Binding(") ; label1.Top",DataSet1," CPViewer.label1_Top")

''Me.DataBindings.Add(New Binding(" BackgroundImage",DataSet1," CPViewer.BackgroundImage")

Me.BackgroundImage =(Image.FromFile(" C:\ CPViewer \ BackgroundImage.jpg")

Me.CenterToScreen(


当我尝试阅读它时将读取 ;身高"和宽度正确地排列和定位表单但是当它读取Label1.top时我得到以下错误


发生了''Syste,.ArgumentException'类型的未处理异常i $ / $
system.windows.forms.dl


附加信息:无法绑定到目标控件上的''label1.Top''


我在这里缺少什么


谢谢

John

I am using the following code to write to an XML file

myXmlTextWriter.Formatting = System.Xml.Formatting.Indente
myXmlTextWriter.WriteStartElement("CPViewer"
myXmlTextWriter.WriteElementString("Height", InputBoxHeight
myXmlTextWriter.WriteElementString("Width", InputBoxWidth
''myXmlTextWriter.WriteElementString("Background", (OpenFileDialog1.FileName)
myXmlTextWriter.WriteElementString("label1.Top", label1.Top
myXmlTextWriter.WriteElementString("label1.Left", label1.Left
myXmlTextWriter.WriteElementString("label1.Height" , label1.Height
myXmlTextWriter.WriteElementString("label1.Width", label1.Width
myXmlTextWriter.WriteEndElement(
myXmlTextWriter.Flush(
myXmlTextWriter.Close(

Here is the XML output

<CPViewer><Height>600</Height><Width>800</Width><label1.Top>200</label1.Top><label1.Left>152</label1.Left><label1.Height>23</label1.Height><label1.Width>100</label1.Width></CPViewer

Here is the code from the reader

DataSet1.ReadXml("C:\CPViewer\LD.xml"
Me.DataBindings.Add(New Binding("Height", DataSet1, "CPViewer.Height")
Me.DataBindings.Add(New Binding("Width", DataSet1, "CPViewer.Width")
Me.DataBindings.Add(New Binding("label1.Top", DataSet1, "CPViewer.label1_Top")
''Me.DataBindings.Add(New Binding("BackgroundImage", DataSet1, "CPViewer.BackgroundImage")
Me.BackgroundImage = (Image.FromFile("C:\CPViewer\BackgroundImage.jpg")
Me.CenterToScreen(

When I try to read it in will will read the "Height" and "Width" lines and position the form properly but when it reads the "Label1.top" line I get the following error

An unhandled exception of type ''Syste,.ArgumentException'' occurred i
system.windows.forms.dl

Additional Information: Cannot bind to property ''label1.Top'' on target control

What am I missing here

Thank you
John

推荐答案

嗨JCrouse,


我以为我建议你使用ds.xmlWrite和ds.xmlRead。


我使用的是你现在使用的那种方法,但是更多

work。


你不想使用那个数据集方法的原因是什么?


Cor
Hi JCrouse,

I thought I adviced you to use the ds.xmlWrite and ds.xmlRead with that.

I used that method you are now using as well, however that is a lot more
work.

What is the reason you do not want to use that dataset method?

Cor





两件事。首先你的数据绑定代码是错误的。第二个Label1.Top

不是有效名称使用Label1_Top而是。


Private Sub Form1_Load(ByVal sender As System.Object,ByVal e As

System.EventArgs)处理MyBase.Load


Dim ds作为新数据集


SaveData()

ds.ReadXml(" C:\ ID.xml")

Me.DataBindings.Add(" Width",ds.Tables(0)," ;宽度)

Me.DataBindings.Add(" Height",ds.Tables(0)," Height")

Label1.DataBindings.Add(" ; Top",ds.Tables(0)," Label1_Top")

Label1.DataBindings.Add(" Left",ds.Tables(0)," Label1_Left")

Label1.DataBindings.Add(" Width",ds.Tables(0)," Label1_Width")

Label1.DataBindings.Add(" Height",ds.Tables (0),Label1_Height)


结束子


私人子节省数据()


Dim myXmlTextWriter As New Xml.XmlTextWr iter(" C:\ lt.xml},

System.Text.Encoding.Unicode)

myXmlTextWriter.Formatting = System.Xml.Formatting .In缩节

myXmlTextWriter.WriteStartElement(" CPViewer")

myXmlTextWriter.WriteElementString(" Height"," 600")

myXmlTextWriter .WriteElementString(" Width"," 800")

''myXmlTextWriter.WriteElementString(" Background",

(OpenFileDialog1.FileName))

myXmlTextWriter.WriteElementString(" label1_Top"," 200")

myXmlTextWriter.WriteElementString(" label1_Left"," 152")

myXmlTextWriter。 WriteElementString(QUOT; label1_Height" ,"23)

myXmlTextWriter.WriteElementString(" label1_Width"," 100")

myXmlTextWriter.WriteEndElement()

myXmlTextWriter .Flush()

myXmlTextWriter.Close()

结束子




- ------------


-

外发邮件已通过无病毒验证。

已检查AVG Anti-Virus( http://www.grisoft.com)。 />
版本:7.0.230 /病毒数据库:263.0.0 - 发布日期:2004年2月2日
Hi,

Two things. First Your databinding code was wrong. Second Label1.Top
isn''t a valid name use Label1_Top instead.

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Load

Dim ds As New DataSet

SaveData()
ds.ReadXml("C:\LD.xml")

Me.DataBindings.Add("Width", ds.Tables(0), "Width")
Me.DataBindings.Add("Height", ds.Tables(0), "Height")
Label1.DataBindings.Add("Top", ds.Tables(0), "Label1_Top")
Label1.DataBindings.Add("Left", ds.Tables(0), "Label1_Left")
Label1.DataBindings.Add("Width", ds.Tables(0), "Label1_Width")
Label1.DataBindings.Add("Height", ds.Tables(0), "Label1_Height")

End Sub

Private Sub SaveData()

Dim myXmlTextWriter As New Xml.XmlTextWriter("C:\LD.xml",
System.Text.Encoding.Unicode)

myXmlTextWriter.Formatting = System.Xml.Formatting.Indented
myXmlTextWriter.WriteStartElement("CPViewer")
myXmlTextWriter.WriteElementString("Height", "600")
myXmlTextWriter.WriteElementString("Width", "800")
''myXmlTextWriter.WriteElementString("Background",
(OpenFileDialog1.FileName))
myXmlTextWriter.WriteElementString("label1_Top", "200")
myXmlTextWriter.WriteElementString("label1_Left", "152")
myXmlTextWriter.WriteElementString("label1_Height" , "23")
myXmlTextWriter.WriteElementString("label1_Width", "100")
myXmlTextWriter.WriteEndElement()
myXmlTextWriter.Flush()
myXmlTextWriter.Close()
End Sub

Ken
--------------

--
Outgoing mail is certified Virus Free.
Checked by AVG Anti-Virus (http://www.grisoft.com).
Version: 7.0.230 / Virus Database: 263.0.0 - Release Date: 6/2/2004


嗨John,


感谢Ken发来的消息,我现在看到你在做什么。

(当我看到XML编写器时,我看起来并不那么远。)


您尝试使用XMLwriter编写它并使用dataset.read读取它

XML

(这部分仅用于编写数据集,请参阅阅读Kens

留言)


试试这个

Dim ds作为新数据集(CPViewer)

dim dt as new datatable(" table1")

ds.tables .add(dt)

dt.columns.add(" Height")



比你能做的更多

dim dr as new datarow = dt.newrow

dr(" Height")= InputBoxHeight.text




dt.add(博士)

ds.writeXML(路径)


也许它看起来更难,我的经验是它非常容易使用。


Cor

Hi John,

Thanks to the message from Ken, I am seeing now what you are doing.
(I did not look that far when I saw the XMLwriter.)

You try to write it using the XMLwriter and read it using the dataset.read
XML
(This part only is for the writing of the dataset, see for the reading Kens
message)

Try this
Dim ds as new dataset("CPViewer")
dim dt as new datatable("table1")
ds.tables.add(dt)
dt.columns.add("Height")
etc.
than you can do
dim dr as new datarow = dt.newrow

dr("Height") = InputBoxHeight.text
etc.

dt.add(dr)
ds.writeXML(path)

Maybe it looks more difficult, my expirience is that it is very easy to use.

Cor


这篇关于XML写作和阅读的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆