Выбранные отмеченные элементы не записываются в новый документ

#vb.net

#vb.net

Вопрос:

Этот код работал, а теперь нет. Я понятия не имею, почему. Предполагается, что код берет все содержимое после и вставляет, записывает его в новый файл.

Прямо сейчас он захватывает весь текст независимо от маркеров запуска / остановки

Я попытался изменить insideBlock на true или false. Я также попытался изменить исходный документ, чтобы убедиться, что маркеры комментариев указаны правильно.

Вот мой код

     Dim startMark As String = "<!--#start#-->"
    Dim stopMark As String = "<!--#stop#-->"
    searchDir = txtDirectory.Text
    Prefix = txtBxUnique.Text
For Each singleFile In allFiles
    If File.Exists(singleFile.FullName) Then
        Dim fileName = singleFile.FullName
        Debug.Print("file name : " amp; fileName)
        ' A backup first    
        Dim backup As String = fileName amp; ".bak"
        File.Copy(fileName, backup, True)

        ' Load lines from the source file in memory
        Dim lines() As String = File.ReadAllLines(backup)

        ' Now re-create the source file and start writing lines inside a block
        Dim insideBlock As Boolean = False
        Using sw As StreamWriter = File.CreateText(backup)
            For Each line As String In lines
                If line = startMark Then
                    ' start writing at the line below
                    insideBlock = True
                ElseIf line = stopMark Then
                    ' Stop writing
                    insideBlock = False
                ElseIf insideBlock = True Then
                    ' Write the current line in the block
                    sw.WriteLine(line)
                End If
            Next
        End Using
    End If
Next
  

Вот исходные данные

 <!--Arbortext, Inc., 1988-2010, v.4002-->
<!DOCTYPE DOC PUBLIC "-//USA-DOD//DTD 38784STD-BV7//EN" [
<!ENTITY graphic3-16_dgcs_file_window SYSTEM  Graphics3-16_dgcs_file_window.cgm" NDATA cgm>
<!ENTITY graphic19000_2 SYSTEM "Graphics19000_2.cgm" NDATA cgm> ]>
<?Pub UDT _bookmark _target>
<?Pub EntList alpha bull copy rArr sect trade deg>
<?Pub Inc>
<doc service="af" docid="TO 1Q-1(M)B-2-2-12-1" docstat="formal" verstatpg="ver" cycle="2" chglevel="1">
<front numcols="1">
<idinfo>
<tmidno></tmidno>
<chgnum></chgnum>
<chgdate></chgdate>
<chghistory>
<chginfo>
<chgtxt></chgtxt>
<date></date></chginfo></chghistory>
<doctype></doctype>
<maintlvl></maintlvl>
<!--#start#-->
<prtitle>
<subject>
Trying to get this code to work</subject></prtitle>
<mfr></mfr>
<contractno>A12345</contractno>
<contractno>B12</contractno>
<!--#start#-->
<line></line>
<contractno>Contract No</contractno>
<supersed></supersed>
<discl>Discipline</discl>
<distrib>
<emphasis type="u"></emphasis></distrib>
<expcont></expcont>
<destr>Destruction</destr>
<authnot></authnot>
<pubdate></pubdate></idinfo>
<lep>
<lepcontents autobuild="1"></lep>
<contents autobuild="1">
<illuslist autobuild="1">
<tablelist autobuild="1">
<foreword>
<!--#start#-->
<para0 verstatus="ver">
<title></title>
<para>
This text should be in the new file</para></para0>
<para0 verstatus="ver">
<title></title>
<para>
<!--#stop#-->
<acronym>
<def></def>
<term></term></acronym></para></para0>
<?Pub Caret -2></foreword>
<safesum>
<para0 verdate="5/2/16" verstatus="ver">
<title>
</title>
<para>
</para>
</para0></safesum></front>
<body numcols="1">
<chapter id="chap1">
<title>Chapter 1</title>
<para0 verstatus="ver">
<title>Paragraph 1</title>
<para></para></para0></chapter>
<chapter id="chap2">
<title>Chapter 2</title>
<section id="thoery_of_operation_section">
<title></title>
<para0 verstatus="ver">
<title>Paragraph 2</title>
<para>
<!--#start#-->
<change level="1" change="delete">
<emphasis type="u" color="blue">
<xref xrefid="fig2-1">Figure 1 Smelly Fish</emphasis></change>
<!--#stop#-->
</para></para0></section>
<section>
<title></title>
<para0>
<title></title></para0></section></chapter>
</body>
</doc>
  

Результатами должны быть только элементы между маркерами.

 <prtitle>
<subject>
Trying to get this code to work</subject></prtitle>
<mfr></mfr>
<contractno>A12345</contractno>
<contractno>B12</contractno>
<para0 verstatus="ver">
<title>Para0 Title</title>
<para>
This text should be in the new file</para></para0>
<para0 verstatus="ver">
<title></title>
<para>
<acronym>
<def>definition</def>
<term>Look here</term></acronym></para>
<change level="1" change="delete">
<emphasis type="u" color="blue">
<xref xrefid="fig2-1">Figure 1 Smelly Fish</emphasis></change>
  

Спасибо за всю помощь,
Макс

Комментарии:

1. Где startMark и stopMark определены?

2. Извините, я обновил код, чтобы показать вам

3. Код работает на моей машине. Я бы посоветовал вам разделить логику на более мелкие методы, чтобы правильно их протестировать. Вы проверили, есть ли файл резервной копии с фактическим, который вы хотите, когда выполняется ReadAllLines? Содержит ли он правильный путь?

4. Я тоже не вижу проблемы. Возможно, ваш файл поврежден, потому что у вас есть начальные теги без совпадающих стоп-тегов. В этих случаях вы получите «<!—#start#—>»в выходном файле.

5. Я просто не знаю. Я пытаюсь это сделать любым способом. Странно, что это работает для вас. Я изменил start / stop, чтобы они всегда совпадали, и получил те же плохие результаты. Итак, вы получаете выделенный текст и только выбранный?