У меня проблемы при разделении больших файлов XML. Когда я генерировать новые элементы (копирование из исходного файла), который будет вставлен в новый, маленький файл, все они начинаются с <at:
XElement Создает имена, начинающиеся с «<at:»
Так, например, мой корневой элемент выглядит следующим образом: <at:export
Вместо этого : <export
Они имеют одинаковую кодировку (UTF-8) с Unix LF.
Любой, кто знает, почему?
Edit: Код в моей расщепленной функции
public List<XDocument> SplitXML(string sourceFile, string chunkNode, int chunkSize)
{
var smallXMLs = new List<XDocument>();
Console.WriteLine("Start reading XML document...");
XDocument document = XDocument.Load(sourceFile);
XElement content = (XElement)document.Root.LastNode;
Console.WriteLine("Generating chunk docs...");
var ids = content.Elements();
XDocument newRequest = null;
XElement root = null;
XElement items = null;
int i = 1;
do
{
root = new XElement(document.Root.Name, document.Root.Attributes());
items = new XElement(chunkNode);
foreach (XElement myElement in document.Root.Nodes())
{
if (myElement.Name.LocalName != chunkNode)
root.Add(myElement);
}
newRequest = new XDocument();
newRequest.Add(root);
var chunk = ids.Take(chunkSize);
items.Add(chunk);
newRequest.Root.Add(items);
chunk.Remove();
smallXMLs.Add(newRequest);
i++;
} while (ids.Any());
Console.WriteLine("Document {0} generated", i.ToString());
return smallXMLs;
}
Часть исходного XML:
<?xml version='1.0' encoding='UTF-8'?>
<export xsi:schemaLocation="http://www.arcticgroup.se/tariff/arctictariff/export Measure.xsd "
xmlns="http://www.arcticgroup.se/tariff/arctictariff/export"
xmlns:at="http://www.arcticgroup.se/tariff/arctictariff/export"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<id>98f8050f-97fb-4c73-bf89-2a332ccc0715</id>
<exportType>MeasureObject</exportType>
<parameters>
<queryDateStart>2005-01-01</queryDateStart>
<queryDateEnd>2020-01-01</queryDateEnd>
</parameters>
<items>
<measure at:geographicalAreaId="GCCG" at:goodsNomenclatureCode="1209220000" at:SIDGoodsNomenclature="32175" at:measureType="SEVAX" at:national="1" at:regulationId="1VAXTSKY" at:regulationRoleType="1" at:SID="-31825" at:SIDGeographicalArea="-10006" at:dateStart="2016-08-21" at:stoppedFlag="0" at:changeType="U">
<measureCondition at:actionCode="01" at:certificateCode="006" at:certificateType="9" at:conditionCodeId="B" at:expression="[0.0,AMOUNT(0.0,"SEK"),TX]" at:national="1" at:sequenceNumber="001" at:SID="-17892">
</measureCondition>
<measureCondition at:actionCode="01" at:conditionCodeId="B" at:expression="$Base1 = ?KGM; $Rate = AMOUNT(0.09,"SEK"); $CalculatedResult = $Base1 * $Rate; $BaseLow = AMOUNT(1200.0,"SEK"); AMAX([$BaseLow, 1.0,VA],[$CalculatedResult, 1.0,VA])" at:national="1" at:sequenceNumber="002" at:SID="-17893">
</measureCondition>
<measureFootnoteAssociation at:footnoteId="030" at:footnoteType="02" at:national="1"/>
<measureFootnoteAssociation at:footnoteId="018" at:footnoteType="02" at:national="1"/>
</measure>
</items>
</export>
Часть выходного XML:
<?xml version="1.0" encoding="utf-8"?>
<at:export xsi:schemaLocation="http://www.arcticgroup.se/tariff/arctictariff/export Measure.xsd " xmlns="http://www.arcticgroup.se/tariff/arctictariff/export" xmlns:at="http://www.arcticgroup.se/tariff/arctictariff/export" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<at:id>98f8050f-97fb-4c73-bf89-2a332ccc0715</at:id>
<at:exportType>MeasureObject</at:exportType>
<at:parameters>
<at:queryDateStart>2005-01-01</at:queryDateStart>
<at:queryDateEnd>2020-01-01</at:queryDateEnd>
</at:parameters>
<items xmlns="">
<at:measure at:geographicalAreaId="GCCG" at:goodsNomenclatureCode="1209220000" at:SIDGoodsNomenclature="32175" at:measureType="SEVAX" at:national="1" at:regulationId="1VAXTSKY" at:regulationRoleType="1" at:SID="-31825" at:SIDGeographicalArea="-10006" at:dateStart="2016-08-21" at:stoppedFlag="0" at:changeType="U">
<at:measureCondition at:actionCode="01" at:certificateCode="006" at:certificateType="9" at:conditionCodeId="B" at:expression="[0.0,AMOUNT(0.0,"SEK"),TX]" at:national="1" at:sequenceNumber="001" at:SID="-17892"></at:measureCondition>
<at:measureCondition at:actionCode="01" at:conditionCodeId="B" at:expression="$Base1 = ?KGM; $Rate = AMOUNT(0.09,"SEK"); $CalculatedResult = $Base1 * $Rate; $BaseLow = AMOUNT(1200.0,"SEK"); AMAX([$BaseLow, 1.0,VA],[$CalculatedResult, 1.0,VA])" at:national="1" at:sequenceNumber="002" at:SID="-17893"></at:measureCondition>
<at:measureFootnoteAssociation at:footnoteId="030" at:footnoteType="02" at:national="1" />
<at:measureFootnoteAssociation at:footnoteId="018" at:footnoteType="02" at:national="1" />
</at:measure>
</items>
</at:export>
Это похоже на пространство имен, но мы можем только сказать, есть ли у вас небольшой пример вашего входного файла, кода и текущего результата. см. [MCVE] для руководства – rene
Прошло некоторое время с тех пор, как я использовал эти классы, но может ли это быть проблемой пространства имен? –
Весьма вероятно, что исходный документ имеет _namespace_, от которого вам нужно избавиться, если он не нужен в выходных документах. Пожалуйста, покажите часть исходного входного документа и кода, который генерирует результат. –