Прежде всего: мне нужно написать заголовок документа Xml, а затем взять некоторые элементы из существующего файла Xml и поместить их в заголовок документа.пишите извлеченные Xml-элементы в Xml без дополнительных тегов.
Наконец, мне нужно разобрать некоторые объекты в один и тот же файл. Результирующий файл должен соответствовать конкретной схеме, так как он должен быть импортирован программой.
До сих пор я надеюсь, что это понятно.
Моя проблема в том:
Я написал заголовок моего документа и извлекали элементы второго документа. Но я не могу записать их в свой файл заголовка, не получая несколько ошибок при попытке загрузить их снова.
Как я уже сказал выше: мне нужны те же теги, которые я извлечил из этого второго файла, без ввода C# в некоторые дополнительные функции, такие как тег объявления.
В соответствии с поручением на странице «Как Ask» Я собираюсь попытаться резюмировать все, что я пытался сделать эту работу.
Итак, теперь для моей истории сбоев;) Код, приведенный ниже, я получил после 2 дней попытки. Я попробовал некоторые раньше, но это один, вероятно, «большинство» работает один:
XElement rootElement = XElement.Load(@filepath);
FileStream fs = new FileStream(@Savepath, FileMode.Append);
IEnumerable<XElement> elements = rootElement.Descendants("Extract1");
foreach (XElement item in elements)
{
Console.WriteLine(item);
item.Save(fs);
}
IEnumerable<XElement> elements2 = rootElement.Descendants("Extract2");
foreach (XElement item in elements2)
{
Console.WriteLine(item);
item.Save(fs);
}
fs.Close();
Console Output звучит так:
<Extract1>
<childnodes />
</Extract1>
<Extract2>
<childnodes />
</Extract2>
И это именно то, что я хочу в моем файле, так что это не как я выбрал неправильные узлы. Но при сохранении в файле появляется магический ярлык объявления, а Xml выглядит так, как показано ниже.
<?xml version="1.0" encoding="UTF-8"?>
<Extract1>
<childnodes />
</Extract1><?xml version="1.0" encoding="UTF-8"?>
<Extract2>
<childnodes />
</Extract2>
Так что я не могу прочитать файлы снова.
Я попытался с
XmlWriterSettings settings = new XmlWriterSettings();
settings.OmitXmlDeclaration = true;
также. Это убивает тег объявления, но я до сих пор не могу прочитать файл, потому что теперь этот раздел «оценивает» ошибку.
<Extract1>
<childnodes />
</Extract1><Extract2>
Последняя вещь, которую я попробовал пишет распакованные элементы в списке listX и сериализовать их с кодом ниже
XmlSerializer serializer = new XmlSerializer(typeof(List<XElement>));
TextWriter textWriter = new StreamWriter(@savepath);
serializer.Serialize(textWriter, listX);
textWriter.Close();
, но теперь я получаю эти
<ArrayOfXElement xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<XElement>
Подводя итог моей проблеме: есть ли способ прочитать эти узлы и «вставить» их в другой файл без добавления дополнительных тегов ?
Кстати, я думал о сохранении исходного Xml-файла и просто удалении всех узлов, которые я не хочу, но сначала это может занять много времени, так как это довольно большие Xml-файлы, а во-вторых, они частично генерируется автоматически, поэтому у меня нет каждого имени.
Спасибо большое! Альтернатива работает отлично! Это решение довольно простое, но элегантное. Должен сказать, мне стало немного стыдно, что я не придумал, что добавить в List вещь. Отличная работа! Еще раз спасибо! – ThiS