XML в CSV конвертировать C # - PullRequest
       16

XML в CSV конвертировать C #

0 голосов
/ 24 сентября 2018

Я пишу функцию ac #, которая преобразует XML-файл в CSV-файл, но я получаю ошибку, которую я не могу найти решение, может ли кто-нибудь помочь?

protected static string page_load()
{
string xmlString = System.IO.File.ReadAllText(@"D:....file.xml");
DataSet ds = new DataSet();
StringReader stringReader = new StringReader(xmlString);
ds.ReadXml(stringReader);
DataTable dtstring = new DataTable();
dtString = ds.Tables[0];
}

в строке 4: ds.ReadXml (StringReader);я получаю "Не удалось инициализировать систему конфигурации"

<?xml version=""1.0"" encoding=""utf-8"" ?> 
    <DOCUMENT> 
       <ABCS> 
         <ABC> 
           <abc_id style_sid=""-4939636236138949558"" style_code=""""/> 
           <abc item_sid=""-4939635934019714433"" upc=""30109"" use_qty_decimals=""0"" prod_cost="""" reclass_item_sid=""""/> 
           <abc_c_d> 
            <abc_c_ds no=""1"" value=""""/>
            <abc_c_ds no=""2"" value=""""/> 
            <abc_c_ds no=""3"" value=""""/> 
            <abc_c_ds no=""4"" value=""""/> 
            <abc_c_ds no=""5"" value=""""/>
            <abc_c_ds no=""6"" value=""""/> 
            <abc_c_ds no=""7"" value=""""/>
            <abc_c_ds no=""8"" value=""""/> 
            <abc_c_ds no=""9"" value=""""/> 
            <abc_c_ds no=""10"" value=""""/> 
            <abc_c_ds no=""11"" value=""""/>
            <abc_c_ds no=""12"" value=""""/> 
            <abc_c_ds no=""13"" value=""""/> 
            <abc_c_ds no=""14"" value=""""/>
          </abc_c_d>
       </ABC>
    </ABCS> 
  </DOCUMENT>

Ответы [ 2 ]

0 голосов
/ 24 сентября 2018

Я попробовал это, и это работает.Проблема должна заключаться в двойных кавычках, которые вы использовали в XML для чтения через File reader.Проверьте XML

string xmlString = @"<?xml version=""1.0"" encoding=""utf-8"" ?> 
    <DOCUMENT> 
       <ABCS> 
         <ABC> 
           <abc_id style_sid=""-4939636236138949558"" style_code=""""/> 
           <abc item_sid=""-4939635934019714433"" upc=""30109"" use_qty_decimals=""0"" prod_cost="""" reclass_item_sid=""""/> 
           <abc_c_d> 
            <abc_c_ds no=""1"" value=""""/>
            <abc_c_ds no=""2"" value=""""/> 
            <abc_c_ds no=""3"" value=""""/> 
            <abc_c_ds no=""4"" value=""""/> 
            <abc_c_ds no=""5"" value=""""/>
            <abc_c_ds no=""6"" value=""""/> 
            <abc_c_ds no=""7"" value=""""/>
            <abc_c_ds no=""8"" value=""""/> 
            <abc_c_ds no=""9"" value=""""/> 
            <abc_c_ds no=""10"" value=""""/> 
            <abc_c_ds no=""11"" value=""""/>
            <abc_c_ds no=""12"" value=""""/> 
            <abc_c_ds no=""13"" value=""""/> 
            <abc_c_ds no=""14"" value=""""/>
          </abc_c_d>
       </ABC>
    </ABCS> 
  </DOCUMENT>"; 

DataSet ds = new DataSet();
StringReader stringReaders = new StringReader(xmlString);
ds.ReadXml(stringReaders);
DataTable dtstring = new DataTable();
dtstring = ds.Tables[0];

Я только что удалил двойные кавычки для чтения из файла, и он работает нормально.Ниже приводится новый XML

<?xml version="1.0" encoding="utf-8" ?> 
    <DOCUMENT> 
       <ABCS> 
         <ABC> 
           <abc_id style_sid="-4939636236138949558" style_code=""/> 
           <abc item_sid="-4939635934019714433" upc="30109" use_qty_decimals="0" prod_cost="" reclass_item_sid=""/> 
           <abc_c_d> 
            <abc_c_ds no="1" value=""/>
            <abc_c_ds no="2" value=""/> 
            <abc_c_ds no="3" value=""/> 
            <abc_c_ds no="4" value=""/> 
            <abc_c_ds no="5" value=""/>
            <abc_c_ds no="6" value=""/> 
            <abc_c_ds no="7" value=""/>
            <abc_c_ds no="8" value=""/> 
            <abc_c_ds no="9" value=""/> 
            <abc_c_ds no="10" value=""/> 
            <abc_c_ds no="11" value=""/>
            <abc_c_ds no="12" value=""/> 
            <abc_c_ds no="13" value=""/> 
            <abc_c_ds no="14" value=""/>
          </abc_c_d>
       </ABC>
    </ABCS> 
  </DOCUMENT>

string xmlString = System.IO.File.ReadAllText(@"Path\MyFile.xml");
            DataSet ds = new DataSet();
            StringReader stringReaders = new StringReader(xmlString);
            ds.ReadXml(stringReaders);
            DataTable dtstring = new DataTable();
            dtstring = ds.Tables[0];
0 голосов
/ 24 сентября 2018

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

Как избежать двойных кавычек в значениях атрибутов XML?

Заменить:

"

на

&quot;
...