-1

我正在编写将 xml 文件转换为 csv 文件的 ac# 函数,但我收到一个错误,我找不到解决方案,谁能帮忙?

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>
4

2 回答 2

0

您的 XML 不是一个有效的 XML 文件,如果它打算存在,您需要在属性中转义双引号字符。

如何在 XML 属性值中转义双引号?

代替:

"

&quot;
于 2018-09-24T09:51:43.827 回答
0

我试过这个及其工作。问题一定是您在 XML 中使用的双引号来读取文件阅读器。检查 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];
于 2018-09-24T09:52:02.957 回答