XML序列化每隔一行加强一次

时间:2014-12-17 08:49:51

标签: vb.net

我试图序列化xml文件,我正面临一些问题。请查看我的xml示例文件:

<Information xmlns="dis">
    <SOS.Alert>
    <signal>4</signal>
    <tresh>RTX</tresh>
    <obb>GGHUI</obb>
    </SOS.Alert>
    <SOS.Alert>
    <signal>3</signal>
    <tresh>RTR</tresh>
    <obb>GGH</obb>
    </SOS.Alert>
    <SOS.Alert>
    <signal>20</signal>
    <tresh>WWRTX</tresh>
    <obb>BBHUI</obb>
    </SOS.Alert>
    <SOS.Alert>
    <signal>13</signal>
    <tresh>DRTR</tresh>
    <obb>GFH</obb>
    </SOS.Alert>
    ....
</Information>
问题是它正在跳过每一秒“秒”。因此,如果我们有4个输入,如上所述,只有两个将被序列化:

<SOS.Alert>
<signal>4</signal>
<tresh>RTX</tresh>
<obb>GGHUI</obb>
</SOS.Alert>
<SOS.Alert>
<signal>20</signal>
<tresh>WWRTX</tresh>
<obb>BBHUI</obb>
</SOS.Alert>

这是我正在使用的代码:

Me.xmlreader = New XmlTextReader(inputFileName)


            Me.xmlreader.WhitespaceHandling = WhitespaceHandling.None
            While (Me.xmlreader.Read())
                If ((Me.xmlreader.Name = "SOS.Alert") And (Me.xmlreader.NodeType = XmlNodeType.Element) And (Me.xmlreader.IsStartElement())) Then

                    Me.data.MyList.Add(xmlreader.ReadOuterXml)
                End If

            End While

1 个答案:

答案 0 :(得分:1)

((Me.xmlreader.Name =&#34; SOS.Alert&#34;)应为((Me.xmlreader.LocalName =&#34; SOS.Alert&# 34)

  • 名称包含命名空间:dis:SOS.Alert
  • LocalName 已删除前缀:SOS.ALert

其他方法

Imports <xmlns:dis="dis"> ' required for example 2

。 。

Dim _xmlString As String = <Information xmlns="dis">
                                  <SOS.Alert>
                                        <signal>4</signal>
                                        <tresh>RTX</tresh>
                                        <obb>GGHUI</obb>
                                  </SOS.Alert>
                                  <SOS.Alert>
                                        <signal>3</signal>
                                        <tresh>RTR</tresh>
                                        <obb>GGH</obb>
                                  </SOS.Alert>
                                  <SOS.Alert>
                                        <signal>20</signal>
                                        <tresh>WWRTX</tresh>
                                        <obb>BBHUI</obb>
                                  </SOS.Alert>
                                  <SOS.Alert>
                                        <signal>13</signal>
                                        <tresh>DRTR</tresh>
                                        <obb>GFH</obb>
                                  </SOS.Alert>
                             </Information>.ToString

Dim _xdoc As XDocument = XDocument.Parse(_xmlString)

' Example 1
For Each _x As XElement In From _e In _xdoc.Root.Descendants Where _e.Name.LocalName = "SOS.Alert" Select _e
    Debug.WriteLine(_x.ToString)
Next

' Example 2 - requires "Imports <xmlns:dis="dis">" the namespace of the xml
Dim _xdoc As XDocument = XDocument.Parse(_xmlString)
For Each _x As XElement In _xdoc.Root.<dis:SOS.Alert>
    Debug.WriteLine(_x.ToString)
Next