„xsi” jest niezadeklarowanym prefiksem używającym XmlDocument

Otrzymuję „xsi” to niezadeklarowany prefiks za pomocą XmlDocument.

Próbuję odczytać plik, który ma następujący schemat:

<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2"
     xmlns:gx="http://www.google.com/kml/ext/2.2" 
     xmlns:kml="http://www.opengis.net/kml/2.2"
     xmlns:atom="http://www.w3.org/2005/Atom">
        <Document>
            <Document id="robert" xsi:schemaLocation="http://www.opengis.net/kml/2.2 http://schemas.opengis.net/kml/2.2.0/ogckml22.xsd http://www.google.com/kml/ext/2.2 http://code.google.com/apis/kml/schema/kml22gx.xsd">
              <Placemark>
                <description>test</description>
              </Placemark>
        </Document>
    </Document>
</kml>

Próbowałem:

    XmlDocument xmldoc = new XmlDocument();
    using (XmlTextReader tr = new XmlTextReader(strXmlFile))
    {
        //tr.Namespaces = false; (uncomment to ignore namespace)
        xmldoc.Load(tr);  // 'xsi' is an undeclared prefix error here
    }

Jeśli odkomentuję linię, aby zignorować przestrzeń nazw, ładuje się poprawnie, ale nie można zapisaćXmlDocument później. Ignorowanie tego nie byłoby rozwiązaniem. Czy ktoś wie, jak poprawnie załadować schemat? Problem / błąd występuje w tym węźle:

<Document id="robert" xsi:schemaLocation="http://www.opengis.net/kml/2.2 http://schemas.opengis.net/kml/2.2.0/ogckml22.xsd http://www.google.com/kml/ext/2.2 http://code.google.com/apis/kml/schema/kml22gx.xsd">

Aktualizacja # 1 Próbowałem:

XmlDocument xmldoc = new XmlDocument();
NameTable nt = new NameTable();
XmlNamespaceManager nsmgr = new XmlNamespaceManager(nt);
nsmgr.AddNamespace("xsi", "http://www.w3.org/2001/XMLSchema-instance");
XmlParserContext context = new XmlParserContext(null, nsmgr, null, XmlSpace.None);
XmlReaderSettings xset = new XmlReaderSettings();
xset.ConformanceLevel = ConformanceLevel.Fragment;
XmlReader rd = XmlReader.Create(new StringReader(strXmlFile), xset, context);
xmldoc.Load(rd);  // error is still on this line

Ale otrzymuję ten błąd teraz:

„Określonego węzła nie można wstawić jako poprawnego elementu podrzędnego tego węzła, ponieważ określony węzeł jest nieprawidłowego typu”. Wygląda na to, że zbliżam się ...

questionAnswers(2)

yourAnswerToTheQuestion