Объедините XML-файлы в XDocument

Переменная рабочего листа будет проходить здесь ... после объявления поменяйте местами каждый экземпляр Sheets("Monthly Status") с именем переменной (ws)


Dim ws As Worksheet: Set ws = ThisWorkbook.Sheets("Monthly Status")    

If Not RefDate1 Then
    ws.Range("K24:K34").ClearContents
Else
    ws.Range("K24:K25") = RefDate1 - (7 * 26)
    ws.Range("K26") = RefDate1 - (7 * 23)
    'and so on......
End If
14
задан Larry 20 July 2010 в 06:46
поделиться

3 ответа

Я попробовал немного сам:

var MyDoc = XDocument.Load("File1.xml");
MyDoc.Root.Add(XDocument.Load("File2.xml").Root.Elements());

Я не знаю, хорошо ли это или плохо, но это хорошо работает мне :-)

25
ответ дан 1 December 2019 в 08:54
поделиться

Быть прагматичным, XDocument по сравнению с XmLDocument не является бескомпромиссным (если Вы не находитесь на Silverlight) - итак, если XmlDoucument делает что-то, в чем Вы нуждаетесь, и XDocument не делает, затем возможно, используют XmlDocumentImportNode и т.д.).

Тем не менее даже с XDocument, Вы могли, по-видимому, использовать XNode.ReadFrom импортировать каждого, затем просто .Add это к основному набору.

Конечно, если файлы являются большими, XmlReader/XmlWriter могло бы быть более эффективным..., но более сложным. К счастью, XmlWriter имеет a WriteNode метод, который принимает XmlReader, таким образом, можно перейти первому ребенку в XmlReader и затем просто разбомбите его к выходному файлу. Что-то как:

    static void AppendChildren(this XmlWriter writer, string path)
    {
        using (XmlReader reader = XmlReader.Create(path))
        {
            reader.MoveToContent();
            int targetDepth = reader.Depth + 1;
            if(reader.Read()) {
                while (reader.Depth == targetDepth)
                {
                    writer.WriteNode(reader, true);
                }                
            }
        }
    }
3
ответ дан 1 December 2019 в 08:54
поделиться

Как обходное решение, Вы могли использовать файл XSL, чтобы объединить XML-файлы и затем преобразовать его к объекту XDocument.

0
ответ дан 1 December 2019 в 08:54
поделиться
Другие вопросы по тегам:

Похожие вопросы: