簡體   English   中英

如何將一個完整的節點插入到 vb.net 中的 xml?

[英]how can i insert a complete node to an xml in vb.net?

我有以下 function 它帶來了一個節點列表,我需要將它添加到以下 xml

 Public Function Salida(ByVal est As String, ByVal err As String, Optional node As Object = Nothing) As String
    Dim m_xmld = New XmlDocument
    Try
        m_xmld.LoadXml("<tx><estado></estado><info></info></tx>")
        m_xmld.SelectSingleNode("tx/estado").InnerText = est
        m_xmld.SelectSingleNode("tx/info").InnerText = err

        If Not node Is Nothing Then

            m_xmld.AppendChild(node)

        End If

    Catch ex As Exception
        m_xmld.InnerText = "Error"


    End Try
    Return m_xmld.InnerXml

End Function

但是當我嘗試添加它時,出現以下錯誤“{“無法將類型為“System.Xml.XmlElementList”的 object 轉換為類型“System.Xml.XmlNode”。}”

如何命名function並獲取節點:

mvarXmlSalida = Util.Salida("0", "", xmldoc.GetElementsByTagName("file"))



 <Transport>
     <file>
        <name>test.txt</name>
        <size>1,52 Kb</size>
        <type>.txt</type>
        <data>test data</data>
        <option>ExactName</option>
      </file>
    <Transport>

目前還不太清楚您要 append 做什么,但以下內容應該會有所幫助:

添加以下導入

  • Imports System.IO
  • Imports System.Xml.Linq
Public Function Salida(est As String, err As String, Optional node As XElement = Nothing) As String
    Dim xmlStr As String = "<tx><estado></estado><info></info></tx>"

    'parse XML
    Dim root As XElement = XElement.Parse(xmlStr)

    If node IsNot Nothing Then
        root.Elements("estado").FirstOrDefault().AddAfterSelf(node) 'option 1
        'root.Elements("info").FirstOrDefault().AddAfterSelf(node) 'option 2

        'root.Elements("estado").FirstOrDefault().AddFirst(node) 'option 3
        'root.Elements("info").FirstOrDefault().AddFirst(node) 'option 4
    End If

    'save XML to string
    Using tr As StringWriter = New StringWriter
        root.Save(tr)
        Return tr.ToString
    End Using
End Function

用法 1

Dim xmlInput As String = "
     <Transport>
         <file>
             <name>test.txt</name>
             <size>1,52 Kb</size>
             <type>.txt</type>
             <data>test data</data>
             <option>ExactName</option>
         </file>
     </Transport>"

Dim nodeTransport As XElement = XElement.Parse(xmlInput)

'node: Transport
Dim result As String = Salida("0", "", nodeTransport)

Debug.WriteLine(result)

用法 2

Dim xmlInput As String = "
     <Transport>
         <file>
             <name>test.txt</name>
             <size>1,52 Kb</size>
             <type>.txt</type>
             <data>test data</data>
             <option>ExactName</option>
         </file>
     </Transport>"

Dim nodeTransport As XElement = XElement.Parse(xmlInput)
Dim nodeFile As XElement = nodeTransport.Elements("file").FirstOrDefault()

'node: file
Dim result As String = Salida("0", "", nodeFile)

Debug.WriteLine(result)

結果(用法 2)

<?xml version="1.0" encoding="utf-16"?>
<tx>
  <estado></estado>
  <file>
    <name>test.txt</name>
    <size>1,52 Kb</size>
    <type>.txt</type>
    <data>test data</data>
    <option>ExactName</option>
  </file>
  <info></info>
</tx>

資源

一個猜想,

首先將你的 function 重寫。

Public Function Salida(ByVal est As String,
                        ByVal err As String,
                        Optional node As XElement = Nothing) As XElement

    Dim m_xmld As XElement
    m_xmld = <tx><estado><%= est %></estado><info><%= err %></info></tx>
    If Not node Is Nothing Then
        m_xmld.Add(node)
    End If

    Return m_xmld
End Function

第二,展示它的使用。

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    Dim xe As XElement
    xe = <Transport>
             <file>
                 <name>test.txt</name>
                 <size>1,52 Kb</size>
                 <type>.txt</type>
                 <data>test data</data>
                 <option>ExactName</option>
             </file>
         </Transport>

    Dim result As XElement
    result = Salida("EST", "ERR", xe.<file>.FirstOrDefault)

    'result
    '<tx>
    '  <estado>EST</estado>
    '  <info>ERR</info>
    '  <file>
    '    <name>test.txt</name>
    '    <size>1,52 Kb</size>
    '    <type>.txt</type>
    '    <data>test data</data>
    '    <option>ExactName</option>
    '  </file>
    '</tx>
End Sub

正如我在評論中提到的,您正在嘗試做的事情並不清楚!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM