使用vb从xml文件中删除换行符和空格

时间:2013-04-17 04:19:57

标签: xml vb.net whitespace

我已经在网上看了几天如何做到这一点。我发现代码的小元素,但我似乎错过了较大的项目。

我有一些xml文件,我需要编辑标签内的额外空格(innertext),我需要取出许多换行符(或返回 - 不确定我是否有正确的术语)。同样,有一些元素,比如一些文本,我想保留文本,但只删除标签(文本将被吸收到父标签,这就是为什么我需要摆脱空格和返回。

<root>
  <element>Some text here that has line breaks. Like this: 
    item        one 
    item two
  </element> 
</root>

需要它看起来像:

<root>
 <element>Some text here that has line breaks. Like this: item item two</element>
</root>    

我发现了这一点,但我知道它不起作用。我知道我可能需要一些可以读取和替换的代码(比如每个节点等等)。

这是我的开始:

Private Sub Button1_Click_1(sender As Object, e As EventArgs) Handles Button1.Click
    Dim path As String = "c:\temp\"

    Dim doc As New XmlDocument
    doc.PreserveWhitespace = False
    doc.Load(path & filenm.Text)
    'need some loop though here with a doc.replace(something???)
    doc.Save(path & filenm.Text)
    doc.PreserveWhitespace = False
End Sub

有任何帮助吗?顺便说一下,我得到的所有帮助都很棒。我是一个新手,但是从你身上学到了很多,现在有一个非常酷的应用程序,让人们认为我知道我在做什么。 ; - )

1 个答案:

答案 0 :(得分:0)

你可以尝试

Private Sub Button1_Click_1(sender As Object, e As EventArgs) Handles Button1.Click
    Dim path As String = "c:\temp\"

    Dim doc As New XmlDocument
    doc.Load(path & filenm.Text)

    'loop through every text node
    For Each Node As XmlNode In doc.SelectNodes("//text()")
        Node.Value = System.Text.RegularExpressions.Regex.Replace(Node.Value, "\s+", " ").Trim
    Next

    doc.Save(path & filenm.Text)
End Sub

以下代码替换每个标记之间的所有空格。这没有回答这个问题,但可能对某些人有帮助。

'get XML content without whitespaces
Dim XmlContent As String = doc.OuterXml

'save the content
File.WriteAllText(path & filenm.Text, XmlContent)