Új hozzászólás Aktív témák

  • Keem1

    veterán

    Srácok, bizonyára lesz olyan, aki emlékszik rá, hogy nagy xml-ekkel dolgozom.

    A korábbi megoldásom az volt, hogy XmlDocument + XmlNode, amíg az XML befért a memóriába. Mostanra sok lett az, ami nem fér be.
    Új megoldást találtam ki: alapvetően XmlReader (ez a nagy XML), és amelyik node épp kell, azt beolvasom DOM-ba.

    using (XmlReader xmlReader = XmlReader.Create(docUrl))
    {
    while (xmlReader.ReadToFollowing("product"))
    {
    if (xmlReader.Name.Equals("product") && (xmlReader.NodeType == XmlNodeType.Element))
    {
    XmlDocument xmldoc = new XmlDocument();
    XmlElement root = xmldoc.CreateElement("product-export");
    xmldoc.AppendChild(root);
    XmlNode node = xmldoc.ReadNode(xmlReader);
    }
    }
    }

    Így elvileg egy node-ot tartok a ramban, mindig amivel épp dolgozom. Működne is a korábbi megoldásom az által, hogy a node nevű aktuális csomópont ugyanúgy megvan, csak eddig DOM-ból foreach-csel körbejárva, így meg mindig csak egy van beolvasva.
    Igen ám, viszont előállt egy olyan gond, hogy midegyik node mellé társul egy #whitespace elnevezésű üres cucc, amit az eddigi kód megpróbál feldolgozni.
    Tehát most a node.ChildNodes.Count = (régi) node.ChildNodes.Count *2, mivel van egy #whitespace nevű érvénytelen node-om is.
    Ezt hogy tudnám kiszedni? És mitől keletkezett? Így kell elképzelni: [kép]

Új hozzászólás Aktív témák