XML-adatok olvasása az XPathDocument és az XmlDocument használatával

Az XML-dokumentumok kétféleképpen olvashatók a System.Xml.XPath névtérben. Az egyik egy XML-dokumentum olvasása a csak XPathDocument olvasható osztály használatával, a másik pedig egy XML-dokumentum olvasása a XmlDocument névtérben található szerkeszthető System.Xml osztállyal.

XML-dokumentumok olvasása az XPathDocument osztály használatával

Az XPathDocument osztály egy XML-dokumentum gyors, írásvédett, memórián belüli ábrázolását biztosítja az XPath-adatmodell használatával. Az osztály példányai a XPathDocument hat konstruktor egyikével jönnek létre. Ezek a konstruktorok lehetővé teszik egy XML-dokumentum olvasását egy Stream, TextReadervagy XmlReader objektum használatával, valamint egy string XML-fájl elérési útját.

Az alábbi példa az XPathDocument osztály konstruktorának string használatával szemlélteti egy XML-dokumentum olvasását.

Dim document As XPathDocument = New XPathDocument("books.xml")
XPathDocument document = new XPathDocument("books.xml");

XML-dokumentumok olvasása az XmlDocument osztály használatával

Az XmlDocument osztály a W3C-dokumentumobjektum-modellt (DOM) 1. szintű mag- és core DOM 2. szintű implementáló XML-dokumentum szerkeszthető memóriabeli ábrázolása. Az osztály példányai a XmlDocument három konstruktor egyikével jönnek létre. Új, üres XmlDocument objektumot úgy hozhat létre, hogy paraméterek nélkül hívja meg az XmlDocument osztálykonstruktort. A konstruktor meghívása után a metódussal betöltheti az Load XML-adatokat egy XmlDocument, Streamvagy TextReader objektum új XmlReader objektumába, valamint egy string XML-fájl elérési útját.

Az alábbi példa az XmlDocument osztálykonstruktor paraméter nélküli használatát és egy XML-dokumentum olvasási Load módját mutatja be.

Dim document As XmlDocument = New XmlDocument()
document.Load("books.xml")
XmlDocument document = new XmlDocument();
document.Load("books.xml");

XML-dokumentum kódolásának meghatározása

Az XmlReader objektum felhasználható egy XML-dokumentum olvasására, valamint XPathDocument és XmlDocument objektumok létrehozására, amint az az előző szakaszokban látható. Előfordulhat azonban, hogy egy XmlReader objektum nem kódolt adatokat olvas be, ezért nem ad meg kódolási információkat.

Az XmlTextReader osztály örökli az XmlReader osztályt, kódolási információkat biztosít a tulajdonságával Encoding , és felhasználható objektum XPathDocument vagy XmlDocument objektum létrehozására.

A XmlTextReader osztály referenciadokumentációjában található Encoding tulajdonságban talál további információt a XmlTextReader osztály által biztosított kódolási információkról.

XPathNavigator-objektumok létrehozása

Miután beolvastál egy XML-dokumentumot egy XPathDocument vagy XmlDocument objektumba, létrehozhatsz egy XPathNavigator objektumot a mögöttes XML-adatok kiválasztásához, kiértékeléséhez, navigálásához és bizonyos esetekben szerkesztéséhez.

Az XPathDocument és XmlDocument osztályok, valamint a XmlNode osztály, implementálják a IXPathNavigable interfészt a System.Xml.XPath névtérben. Ennek eredményeképpen mindhárom osztály megad egy metódust CreateNavigator , amely egy objektumot XPathNavigator ad vissza.

XML-dokumentumok szerkesztése az XPathNavigator osztály használatával

Az XML-adatok kiválasztásán, kiértékelésén és navigálásán kívül az XPathNavigator osztály bizonyos esetekben az azt létrehozó objektum alapján is szerkesztheti az XML-dokumentumokat.

Az XPathDocument osztály írásvédett, miközben az XmlDocument osztály szerkeszthető, ezért a XPathNavigator objektumból létrehozott XPathDocument objektumok nem használhatók XML-dokumentumok szerkesztésére, míg a XmlDocument objektumból létrehozott objektumok igen. Az XPathDocument osztály csak XML-dokumentum olvasására használható. Olyan esetekben, amikor XML-dokumentumot kell szerkesztenie, vagy hozzá kell férnie az osztály által biztosított további funkciókhoz, például az XmlDocument eseménykezeléshez, az XmlDocument osztályt kell használni.

Az CanEdit osztály tulajdonsága XPathNavigator határozza meg, hogy egy XPathNavigator objektum szerkesztheti-e az XML-adatokat.

Az alábbi táblázat az egyes osztályok tulajdonságának CanEdit értékét ismerteti.

IXPathNavigable Végrehajtás CanEdit érték
XPathDocument false
XmlDocument true

Lásd még