gpt4 book ai didi

xml - 内联 xml 文字中的空命名空间 - 如何删除 xmlns?

转载 作者:数据小太阳 更新时间:2023-10-29 02:09:34 25 4
gpt4 key购买 nike

我正在尝试使用 xml 文档来存储电影数据库的数据,但是我遇到了一个问题,我是使用 xml 来存储文档的新手,并且一直在使用教程和 MSDN 来解决这个问题,但是我被卡住了提前感谢

这是我使用的代码

Imports <"...\movies.xml">

Private Sub btnAdd_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAdd.Click

Dim movieToAdd As Movie = getMovieInfo()
MovieBindingSource.AddNew()
Dim doc = XDocument.Load("..\..\movies.xml")
Dim movieAdd = (<temp>
<Movie>
<MovieID><%= movieToAdd.MovieID %></MovieID>
<MovieTitle><%= movieToAdd.MovieTitle %></MovieTitle>
<Studio><%= movieToAdd.Studio %></Studio>
<Director><%= movieToAdd.Direcotor %></Director>
<ReleaseYear><%= movieToAdd.ReleaseYear %></ReleaseYear>
<Genre><%= movieToAdd.Genre %></Genre>
<Rating><%= movieToAdd.Rating %></Rating>
<DVD><%= movieToAdd.DVD %></DVD>
<BluRay><%= movieToAdd.BluRay %></BluRay>
<VHS><%= movieToAdd.VHS %></VHS>
<ScreenFormat><%= movieToAdd.ScreenFormat %></ScreenFormat>
<MovieCase><%= movieToAdd.MovieCase %></MovieCase>
<RunTime><%= movieToAdd.RunTime %></RunTime>
<NumberOfDiscs><%= movieToAdd.NumberOfDiscs %></NumberOfDiscs>
</Movie>
</temp>)
Try
Dim addMovie = doc.<movies:Movies>(0)
addMovie.Add(movieAdd.Nodes())
doc.Save("..\..\movies.xml")
Catch ex As Exception
Throw ex
End Try
End Sub

Private Function getMovieInfo() As Movie

Dim movieToAdd As New Movie

movieToAdd.MovieID = CInt(MovieIDTextBox.Text)
movieToAdd.MovieTitle = MovieTitleTextBox.Text
movieToAdd.Studio = StudioTextBox.Text
movieToAdd.Direcotor = DirecotorTextBox.Text
movieToAdd.ReleaseYear = ReleaseYearTextBox.Text
movieToAdd.Genre = GenreComboBox.SelectedText
movieToAdd.Rating = RatingComboBox.SelectedText
movieToAdd.ScreenFormat = ScreenFormatComboBox.SelectedText
movieToAdd.NumberOfDiscs = NumberOfDiscsTextBox.Text
movieToAdd.RunTime = CInt(RunTimeTextBox.Text)
movieToAdd.BluRay = CBool(BluRayCheckBox.CheckState)
movieToAdd.DVD = CBool(DVDCheckBox.CheckState)
movieToAdd.VHS = CBool(VHSCheckBox.CheckState)
movieToAdd.MovieCase = CBool(MovieCaseCheckBox.CheckState)

Return movieToAdd
End Function

Inn xml 文件我得到这个

<Movie xmlns="">
<MovieID>22</MovieID>
<MovieTitle>test</MovieTitle>
<Studio>test</Studio>
<Director>test</Director>
<ReleaseYear>2121</ReleaseYear>
<Genre></Genre>
<Rating></Rating>
<DVD>false</DVD>
<BluRay>false</BluRay>
<VHS>false</VHS>
<ScreenFormat></ScreenFormat>
<MovieCase>false</MovieCase>
<RunTime>123</RunTime>
<NumberOfDiscs>2</NumberOfDiscs>
</Movie>

为什么我在电影父节点中得到那个xmlns = ""

我从 movieAdd 变量中删除父节点,它把 xlmns = 放在所有节点中

谁能告诉我我做错了什么?

最佳答案

电影 XML 文件似乎(虽然您没有分享)使用命名空间。所以我假设在那个文件的某个地方(可能在根元素上)你会有类似 xmlns="mymovieurl"的东西。重要的是要认识到每个 XML 元素和属性都由一对字符串标识。本地名称(电影、DVD、VHS 等)和命名空间 URI(空、mymovieurl 等)。在上面的代码中,由于您没有指定默认命名空间,因此所有元素都在空命名空间中(它们的命名空间 URI 是空字符串)。但是要向其添加这些内容的 XML 文件的元素位于某个非空命名空间 (mymovieurl) 中。为了保留您要添加的元素的命名空间,代码必须注入(inject) xmlns=""属性,该属性将该元素及其所有子元素标记为空命名空间(就像您在代码中指定的一样)。

解决方案取决于您想要实现的目标。我假设您想将元素添加到文件其余部分使用的 namespace 中。

一个简单的方法是添加进口

这意味着代码中所有没有前缀的元素都应该属于命名空间“mymovieurl”。 (只需将其更改为您的电影文件正在使用的任何 namespace URI)。

关于xml - 内联 xml 文字中的空命名空间 - 如何删除 xmlns?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3376433/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com