2015-04-26 2 views
0

У меня есть простая программа для преобразования файла doc в файл xml с помощью vb.net.Преобразование Doc в XML

Dim app As Word.Application = New Word.Application 
Dim doc As Word.Document = app.Documents.Open(txtFileName.Text) 

Dim writer As New XmlTextWriter("product.xml", System.Text.Encoding.UTF8) 
writer.WriteStartDocument(True) 
writer.WriteStartElement("JUDGEMENT") 
writer.Formatting = Formatting.Indented 

For Each paragraph As Word.Paragraph In doc.Paragraphs 
    paragraph.Next() 
    writer.WriteStartElement("p") 

    If (paragraph.Range.Font.Bold) Then 
     writer.WriteStartElement("b") 
     writer.WriteString(paragraph.Range.Text.Trim) 
     writer.WriteString(paragraph.Range.Text) 
     writer.WriteEndElement() 
    Else 
     writer.WriteString(paragraph.Range.Text) 
    End If 

    writer.WriteEndElement() 
Next 

writer.WriteEndElement() 
writer.WriteEndDocument() 
writer.Close() 
app.Quit() 

Результат будет примерно таким. Проблема - жирный тег не имеет жирного шрифта, он помещается в конце предложений.

<?xml version="1.0" encoding="utf-8" standalone="yes"?> 
<JUDGEMENT> 
    <p> 
    <b>Lorem Ipsum is simply dummy text of the printing and typesetting industry.</b> 
    </p> 
    <p> 
    <b>Lorem Ipsum is simply dummy text of the printing and typesetting industry.</b> 
    </p> 
</JUDGEMENT> 

Но мне нужен результат, как этот

<?xml version="1.0" encoding="utf-8" standalone="yes"?> 
<JUDGEMENT> 
    <p> 
    <b>Lorem Ipsum </b>is simply dummy text of the printing and typesetting industry. 
    </p> 
    <p> 
    <b>Lorem Ipsum </b>is simply dummy text of the printing and typesetting industry. 
    </p> 
</JUDGEMENT> 

Что мне нужно сделать, чтобы добавить или изменения?

+0

Я отредактировал ваше название. Пожалуйста, смотрите: «Если вопросы включают« теги »в их названиях?] (Http://meta.stackexchange.com/questions/19190/), где консенсус« нет, они не должны ». –

+0

FYI, вы не должны использовать 'new XmlTextReader()' или 'new XmlTextWriter()'. Они устарели с .NET 2.0. Вместо этого используйте 'XmlReader.Create()' или 'XmlWriter.Create()'. –

+0

В отличие от сайтов форума, мы не используем «Спасибо», или «Любая помощь оценена» или подписи на [so]. См. «[Должны ли« Привет »,« спасибо », теги и приветствия удалены из сообщений?] (Http://meta.stackexchange.com/questions/2950/should-hi-thanks-taglines-and-salutations-be -removed-from-posts). –

ответ

0

Похоже, у вас есть конечный тег в конце абзаца. Попробуйте это так:

If (paragraph.Range.Font.Bold) Then 
    writer.WriteStartElement("b") 
    writer.WriteString(paragraph.Range.Text.Trim) 
    writer.WriteEndElement() 
    writer.WriteString(paragraph.Range.Text)   
Else 
    writer.WriteString(paragraph.Range.Text) 
End If 
Смежные вопросы