【问题标题】:How to process XML files如何处理 XML 文件
【发布时间】:2014-02-21 19:32:14
【问题描述】:

我对 XML 很陌生(虽然我了解数据结构)并且非常困惑 :(。所以我在完成最近的一个项目后开始更彻底地研究这个问题(时间紧迫,所以我做了我能做的但很漂亮痛苦)。现在我想“学习”正确的方法来解决这个问题,以便我知道未来。

我有一个很长的 XML 文件。这个文件有很多节点。此外,如果我更改查询,我会收到不同的 XML。

所以我的研究引导我使用 XSD。我需要使用这个工具首先生成一个 XSD,然后是一个类来保存返回的数据(所以我认为)。我运行了以下命令

C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC>xsd.exe C:/Users/name/Desktop/myFile.xml /l:VB /outputdir:c:/projects/ /classes

然后我尝试从生成的 XSD 创建一个类

C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC>xsd.exe c:/projects/myFile.xsd /classes /language:VB

但收到错误“缺少属性分数”。所以这让我觉得我需要进一步研究这个问题,但是我被一些设计在 2005 年使用的文章的数量所淹没,但只是让我感到困惑。

  1. 那么我应该如何处理 XML 文件并创建相关类(VS 2010 或 VS 2013)?
  2. 是否需要为所有 XML 文件或从 Web 服务返回的 XML 创建 XSD?
  3. VS2010 或 VS2013 是否能完成任何我可以进一步学习/阅读的繁重工作?

请注意,我已阅读 MSDN 和大量文章,但需要指向正确方向的指针来填补缺失的空白。 我通常使用 VB .Net 和 SQL to Linq,但我需要了解处理 XML 文件的基础以及如果返回的 XML 包含不同的节点应该如何完成。我已经阅读了 XMLSerialiser,但如果使用 XML 到 Linq,似乎有不同的方法来处理这个问题。

感谢任何帮助。

【问题讨论】:

    标签: .net vb.net linq c#-4.0 linq-to-xml


    【解决方案1】:

    我给你一个关于将数据库mysql插入xsd的例子,但首先你必须从xsd文件创建表。例如,在你的 xsd 中给出表的名称是员工,用代码和名称填充该表。

    Imports MySql.Data.MySqlClient
    Module dbase
        Public odm As New MySqlConnection
        Public odmc As New MySqlCommand
        Public dt As New DataTable
        Public adap As New MySqlDataAdapter
    
        Public Sub connect_to_sql()
            Dim coba As String
    
            If odm.State = ConnectionState.Closed Then
                coba = "server='localhost';port=3306;uid='root';pwd='';database=arthur;"
                odm.ConnectionString = coba
                odm.Open()
            End If
        End Sub
    Public Sub rssql(ByVal sql As String)
        dt.Reset()
        adap = New MySqlDataAdapter(sql, odm)
        adap.Fill(dt)
    
    End Sub
      End module
    

    此代码将数据表插入 xsd 文件。在创建此代码之前,将数据集组件插入到表单中,然后创建连接到 xsd 文件。

    Public Class Form1
    
        Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            Manform()
            koneksisql()
             rssql("select code,name from employee")
         For i as integer=0 to dt.rows.count-1
            Dataset11.employee.rows.add(new object(){dt.rows(i)(0),dt.rows(i)(1)})
            Msgbox(Dataset11.employee.rows(i)(0))
         Next
    
        End Sub
    End sub
    

    如果您使用 xml 有时无法从 xml 文件加载报告。

    【讨论】:

    • 谢谢,但这并不能真正告诉我如何生成课程或回答我的问题以消除任何混淆。再次感谢您的尝试。
    猜你喜欢
    • 2012-12-26
    • 2014-02-05
    • 2022-07-05
    • 2013-01-26
    • 1970-01-01
    • 2013-06-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多