Возможно, я собираюсь сделать это неправильно, но пока я не столкнулся с этой проблемой, это казалось довольно элегантным способом реализации моего требования, у меня есть загрузка кода на основе xpath, который изменяет документ. Он довольно старый, и я обновляю его сейчас, чтобы сделать его более управляемым, добавляя некоторые дополнительные функции.XDocument Load on Inherited Class - Невозможно использовать
Я думал, что было бы целесообразно создать класс DocxDocument и наследовать его класс XDocument, чтобы я мог использовать System.Xml.Linq и System.Xml.Xpath для редактирования базового документа xml.
Я ошибочно думал, что XDocument может быть отличен как DocXDocument, если он унаследовал тип. Итак, глядя на код ниже, как, черт возьми, я загружаю и XDocument в DocXDocument?
Public Class DocXDocument2
Inherits XDocument
Public Sub New()
MyBase.New()
End Sub
Public Overloads Function Load(DocumentPath As String) As XDocument
Using pkg = WordprocessingDocument.Open(DocumentPath, True)
Return XDocument.Load(pkg.MainDocumentPart.GetStream())
End Using
End Function
End Class
Я просто хочу, чтобы иметь возможность загрузить DOC-то вроде:
dim docx = DocXDocument.load("C:\temp.docx")
Благодарим вас, ответ на лучший класс. Думаю, в этом случае я воспользуюсь вашим вторым примером, поскольку я уже поставил больше кода для этого метода, и я как бы наслаждаюсь использованием возможностей xml vb.net, таких как Me ...! :-) –
Вы были предупреждены ;-) Но именно по этой причине я представил оба примера. Не забывайте отмечать ответ. – Nitram
Уже отмечен как ответ, из интереса в первом примере, если я хотел отредактировать xml, я просто должен был бы использовать _doc.descendants и т. Д. Вместо Me.descendants? –