2016-12-29 8 views
0

大きなXMLファイルを分割するときに問題があります。私は新しい、小さなファイルに挿入する(元のファイルからのコピー)新しい要素を生成すると、それらはすべてが例えばので<at:XElement "<at:"で始まる名前を生成します

で始まる、私のルート要素は次のようになります。これの代わりに<at:export

<export

これらは、Unix LFと同じエンコード(UTF-8)です。

理由を知っている人は誰ですか?

編集: 私のスプリット機能のコードソースXMLの

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,&quot;SEK&quot;),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,&quot;SEK&quot;); $CalculatedResult = $Base1 * $Rate; $BaseLow = AMOUNT(1200.0,&quot;SEK&quot;); 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 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,&quot;SEK&quot;),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,&quot;SEK&quot;); $CalculatedResult = $Base1 * $Rate; $BaseLow = AMOUNT(1200.0,&quot;SEK&quot;); 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> 
+3

名前空間のように見えますが、入力ファイル、コード、および現在の結果の小さな例があるかどうかだけを知ることができます。 [MCVE]の案内を参照してください – rene

+0

私はこれらのクラスを使用しているのでしばらくありましたが、名前空間の問題になる可能性がありますか? –

+0

元のドキュメントに_namespace_という文字が含まれている可能性が非常に高いため、出力ドキュメントに不要な場合は削除する必要があります。元の入力文書の一部と出力を生成するコードを表示してください。 –

答えて

0

私は名前空間の問題を避けるために以下を実行してください:

  string 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\">" + 
       "</export>"; 

      XDocument newRequest = XDocument.Parse(xml); 
関連する問題