0

我对这个 XML 有疑问。在我们的系统中,我们使用来自 DataSet ( ds.GetXml()) 的 XML,并将其作为字符串发送到 Silverlight 应用程序。从那里我们读取 XML 的内容如下:

StringReader stream = new StringReader(XmlData);
XmlReader reader = XmlReader.Create(stream);
XDocument myDoc = new XDocument();
myDoc = XDocument.Load(reader);

问题:有时列名被更改,例如:如果列名以数字开头,那么它将转换它。

"_x0033_column" original column name was "3column" 

是否可以从 XML 中获取原始列名?

XML

<NewDataSet>
  <Table>
    <CheckboxCol>0</CheckboxCol>
    <Kunde>1</Kunde>    
    <Ort_x0020_Postfach /> 
    <erfasst_x0020_von>MasterMind</erfasst_x0020_von>   
    <Buchhaltungsnummer>1</Buchhaltungsnummer>
    <Kreditlimit>0.0000</Kreditlimit>
    <_x0033_STT_Inaktiv>Nein</_x0033_STT_Inaktiv>
    <_x0033_STT_Status>Interessent</_x0033_STT_Status>
    <Zahlungsbedingungen>10 : 10 Tage Netto</Zahlungsbedingungen>    
  </Table>
  <Table>
    <CheckboxCol>0</CheckboxCol>
    <Kunde>3</Kunde>   
    <Ort_x0020_Postfach />    
    <erfasst_x0020_von>MasterMind</erfasst_x0020_von>
    <Buchhaltungsnummer>3</Buchhaltungsnummer>
    <Kreditlimit>0.0000</Kreditlimit>
    <_x0033_STT_Inaktiv>Nein</_x0033_STT_Inaktiv>
    <_x0033_STT_Status>Kunde</_x0033_STT_Status>
    <Zahlungsbedingungen>10 : 10 Tage Netto</Zahlungsbedingungen>
  </Table>
<NewDataSet>

我当前的代码

public SLDataTable(string XmlData, Dictionary<string, string> ColumnDict)
{
    ColumnDefination = ColumnDict;

    foreach (var Item in ColumnDefination)
    {
        Columns.Add(new SLDataColumn() { ColumnName = Item.Key.ToString().Trim(), DataType = GetNullableType(GetColumnType(Item.Value.ToString())) });
    }

    StringReader stream = new StringReader(XmlData);
    XmlReader reader = XmlReader.Create(stream);

    XDocument myDoc = new XDocument();
    myDoc = XDocument.Parse(XmlData);

    if (myDoc != null && myDoc.Elements().Count() > 0 && myDoc.Element("NewDataSet").Elements().Count() > 0)
    {
        int columnCount = myDoc.Element("NewDataSet").Element("Table").Elements().Count();
        int rowCount = myDoc.Element("NewDataSet").Elements().Count();
        string ElmentColumnName = string.Empty;

        foreach (XElement element in myDoc.Element("NewDataSet").Elements())
        {

            var row = new SLDataRow(this);

            foreach (XElement ele in element.Elements())
            {
                ElmentColumnName = ele.Name.ToString().Replace("_x0020_", " ").Replace("_x0028_", " (").Replace("_x0029_", ") ");               
                row[ElmentColumnName] = ConvertValue(ElmentColumnName, ele.Value);
            }
            Rows.Add(row);
        }
    }
}
4

0 回答 0