Я думаю, что лучшая вещь сделать, учат достаточно другого языка так, чтобы можно было переписать вручную, существуют некоторые довольно трудные различия в определенных аспектах, что я не уверен, что преобразователь обработал бы очень хорошо. Например, сравните мой перевод от C# до VB следующего:
public class FileSystemEventSubscription : EventSubscription
{
private FileSystemWatcher fileSystemWatcher;
public FileSystemEventSubscription(IComparable queueName,
Guid workflowInstanceId, FileSystemWatcher fileSystemWatcher) : base(queueName, workflowInstanceId)
{
this.fileSystemWatcher = fileSystemWatcher;
}
становится
Public Class FileSystemEventSubscription
Inherits EventSubscription
Private myFileSystemWatcher As FileSystemWatcher
Public Sub New(ByVal QueueName As IComparable, ByVal WorkflowInstanceID As Guid, ByVal Watcher As FileSystemWatcher)
MyBase.New(QueueName, WorkflowInstanceID)
Me.myFileSystemWatcher = Watcher
End Sub
, C# от Пользовательского образца Платформы Действия, и я боюсь, что потерял ссылку на него. Но это содержит некоторое противно выглядящее наследование (с точки зрения VB).
Вы можете использовать встроенный xDocument. CreateReader () и XmlNodeReader для преобразования туда и обратно.
Внесение этого в метод расширения, чтобы упростить работу.
using System;
using System.Xml;
using System.Xml.Linq;
namespace MyTest
{
internal class Program
{
private static void Main(string[] args)
{
var xmlDocument = new XmlDocument();
xmlDocument.LoadXml("<Root><Child>Test</Child></Root>");
var xDocument = xmlDocument.ToXDocument();
var newXmlDocument = xDocument.ToXmlDocument();
Console.ReadLine();
}
}
public static class DocumentExtensions
{
public static XmlDocument ToXmlDocument(this XDocument xDocument)
{
var xmlDocument = new XmlDocument();
using(var xmlReader = xDocument.CreateReader())
{
xmlDocument.Load(xmlReader);
}
return xmlDocument;
}
public static XDocument ToXDocument(this XmlDocument xmlDocument)
{
using (var nodeReader = new XmlNodeReader(xmlDocument))
{
nodeReader.MoveToContent();
return XDocument.Load(nodeReader);
}
}
}
}
Источники:
Вы можете попробовать записать XDocument в XmlWriter, передаваемый в XmlReader для XmlDocument.
Если я правильно понимаю концепции, прямое преобразование невозможно (внутренняя структура отличается / упрощено с помощью XDocument). Но тогда я могу ошибаться ...
Это кажется, что чтение XDocument через XmlNodeReader - самый быстрый метод. См. Подробности в блоге.