Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在.NET中序列化/反序列化HTML表_C#_.net_Vb.net - Fatal编程技术网

C# 如何在.NET中序列化/反序列化HTML表

C# 如何在.NET中序列化/反序列化HTML表,c#,.net,vb.net,C#,.net,Vb.net,我试图编写一个类来序列化/反序列化一些简单的内容,如下所示: <table border="1"> <tr> <td>row 1, cell 1</td> <td>row 1, cell 2</td> </tr> <tr> <td>row 2, cell 1</td> <td>row 2, cell 2</td> </tr>

我试图编写一个类来序列化/反序列化一些简单的内容,如下所示:

<table border="1">
 <tr>
 <td>row 1, cell 1</td>
 <td>row 1, cell 2</td>
 </tr>
 <tr>
 <td>row 2, cell 1</td>
 <td>row 2, cell 2</td>
 </tr>
 </table> 

第1行,第1单元
第1行第2单元
第2行第1单元
第2行,第2单元
我已经达到了(见下文)的目的,但无法正确生成表xml:

Imports System.Xml.Serialization

<XmlRoot("TABLE")>
Public Class HTMLTable

    <XmlArray("")>
    <XmlArrayItem(GetType(HTMLTableRow), elementName:="TR")>
    Public Property Rows As New List(Of HTMLTableRow)

    <XmlType("TR")>
    Public Class HTMLTableRow

        <XmlArray("TD")>
        Public Property Cells As New List(Of HTMLTableCell)
    End Class

    <XmlType("TD")>
    Public Class HTMLTableCell

        <XmlText()>
        Public Property Value As String
    End Class
   End Class
Imports System.Xml.Serialization
公共类HTMLTable
公共属性行作为新列表(HTMLTableRow的)
公共类HTMLTableRow
公共属性单元格作为新列表(HTMLTableCell)
末级
公共类HTMLTableCell
作为字符串的公共属性值
末级
末级
通过以下测试:

  <Test()>
    Public Sub SerializeTest()
        Dim tbl As New HTMLTable
        Dim row As New HTMLTable.HTMLTableRow
        Dim cell As New HTMLTable.HTMLTableCell
        row.Cells.Add(cell)
        tbl.Rows.Add(row)
        Debug.Print(XMLProcessor.Serialize(tbl))
    End Sub

公共子测试()
Dim tbl作为新的HTMLTable
将行变暗为新的HTMLTable.HTMLTableRow
将单元格设置为新的HTMLTable.HTMLTableCell
行.单元格.添加(单元格)
tbl.行.添加(行)
Debug.Print(XMLProcessor.Serialize(tbl))
端接头
我只是无法将它序列化到这个东西。我试图用xsd生成这个类,但这会产生大量垃圾代码,我真的很想手工维护它,因为它比xsd生成的怪物更容易,因为xsd生成的怪物根本不起作用。上面我做错了什么?

尝试更改:

<XmlArray("")>
<XmlArrayItem(GetType(HTMLTableRow), elementName:="TR")>
Public Property Rows As New List(Of HTMLTableRow)

公共属性行作为新列表(HTMLTableRow的)
进入:


公共属性行作为新列表(HTMLTableRow的)
,及更改:

<XmlArray("TD")>
Public Property Cells As New List(Of HTMLTableCell)

公共属性单元格作为新列表(HTMLTableCell)
进入:


公共属性单元格作为新列表(HTMLTableCell)
这就是为同一任务使用
XmlSerializer
时设置属性的方式

我还将
HTMLTableRow
HTMLTableCell
类移出
HTMLTable


另一方面,您的测试方法并不是真正的测试方法,因为它不执行任何
断言
,当结果不满足您的要求时,它也不会抛出异常

我没有看到在类级别声明的Serializable()属性。。
致以最诚挚的问候

我认为您在这里要做的是使用一个内置类来生成HTML,而不是尝试序列化对象模型


例如,在回答问题之前,如果您想要更全面的功能,请先检查一下,您这样做是为了在某种实际应用程序中使用结果,还是只是为了了解序列化?在内部商店中,这样人们就不用编写HTML代码来在VB.NET代码中生成表了。为什么这会影响你的答案?因为有内置的类来做这件事。再见,达曼!!!正是我需要的。这个测试不是真正的测试方法。。。这是我试图让序列化按我希望的方式运行。一旦我有了它,我就打算用Assert重新编写它……您正在反向进行测试……:)太糟糕了,我们还在.NET 2.0HTML Agility pack是基于2.0的——来自网站:“CodePlex上发布的版本适用于.NET Framework 2.0”,并且
HtmlTextWriter
存在于1.0中。
<XmlArray("TD")>
Public Property Cells As New List(Of HTMLTableCell)
<XmlElement("TD")>
Public Property Cells As New List(Of HTMLTableCell)