Laden...

Warum wirft XDocument beim Durchlaufen Fehlermeldung aus?

Erstellt von freakontour vor 3 Jahren Letzter Beitrag vor 3 Jahren 1.487 Views
F
freakontour Themenstarter:in
15 Beiträge seit 2015
vor 3 Jahren
Warum wirft XDocument beim Durchlaufen Fehlermeldung aus?

Guten Abend,

ich Parse mit XDocument einen XML-String um einzelne Werte auszulesen.
Jedoch kommt immer nach dem Durchlaufen ein Fehler, dass > Fehlermeldung:

Ungültige Daten auf Stammebene. Zeile 1, Position 1 . Ich finde aber den Fehler im XML nicht.


        public List<string> ConvertXMLtoTable(List<string> miiData)
        {
            try
            {
                int j = 0;
                List<string> data = new List<string>();
                for (int i = 4; i <= miiData.Count(); i += 4)
                {
                    XDocument xmlString = XDocument.Parse(miiData[i]);
                    
                    foreach(XElement element1 in xmlString.Root
                        .Elements()
                        .Elements()
                        .Elements())
                    {
                        data.Add(element1.Element("BATCH").Value);
                    }


                }
                
                return data;
            }
            catch (Exception ex)
            {
                logging.CreateLog(ex.ToString());
                return null;
            }
            
        }

XML-String sieht so aus:


<?xml version="1.0" encoding="UTF-8"?><Z_FB_SAPME_GOODSMVT>
    <TABLES>
        <LT_COMPONENTS>
            <item>
                <BATCH>XDTHP</BATCH>
                <ENTRY_QNT>318.176</ENTRY_QNT>
                <MATERIAL>000000000000019122</MATERIAL>
                <MOVE_TYPE>261</MOVE_TYPE>
                <RESERV_NO>0015786363</RESERV_NO>
                <RES_ITEM>0001</RES_ITEM>
                <ORDERID>000001212724</ORDERID>
                <PLANT>1000</PLANT>
                <STGE_LOC>EG03</STGE_LOC>
                <ENTRY_UOM>KGM</ENTRY_UOM>
            </item>
        </LT_COMPONENTS>
    </TABLES>
</Z_FB_SAPME_GOODSMVT>

Wo ist hier den der Fehler?

Gruß Freakontour

T
2.219 Beiträge seit 2008
vor 3 Jahren

Füg nach der XML Definition einen Zeilenumbruch ein.
Ich hatte mal mit XmlDocument ein ähnliches Problem, hier mag scheinbar die Verarbeitung nicht, dass direkt Daten nach der Xml Definition kommen.


<?xml version="1.0" encoding="UTF-8"?>
<Z_FB_SAPME_GOODSMVT>
    <TABLES>
        <LT_COMPONENTS>
            <item>
                <BATCH>XDTHP</BATCH>
                <ENTRY_QNT>318.176</ENTRY_QNT>
                <MATERIAL>000000000000019122</MATERIAL>
                <MOVE_TYPE>261</MOVE_TYPE>
                <RESERV_NO>0015786363</RESERV_NO>
                <RES_ITEM>0001</RES_ITEM>
                <ORDERID>000001212724</ORDERID>
                <PLANT>1000</PLANT>
                <STGE_LOC>EG03</STGE_LOC>
                <ENTRY_UOM>KGM</ENTRY_UOM>
            </item>
        </LT_COMPONENTS>
    </TABLES>
</Z_FB_SAPME_GOODSMVT>

Developer, Developer, Developer, Developer....

99 little bugs in the code, 99 little bugs. Take one down, patch it around, 117 little bugs in the code.

16.806 Beiträge seit 2008
vor 3 Jahren

Das XML Root Element muss in der neuen Zeile beginnen, wenn nicht alle Inhalte Inline sind.
XDocument verhält sich hier korrekt.

F
freakontour Themenstarter:in
15 Beiträge seit 2015
vor 3 Jahren

Perfekt, danke für die Hilfe. Hat mein Problem gelöst.

Gruß freakontour