Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Az XML-dokumentumok többféleképpen is ábrázolhatóak a Microsoft .NET-keretrendszerben. Ez magában foglalja a String, vagy a XmlReader, , XmlWriter, XmlDocumentvagy XPathDocument osztályok használatát. Az XML-dokumentum különböző ábrázolásai közötti átjárás megkönnyítése érdekében az XPathNavigator osztály számos metódust és tulajdonságot kínál az XML kinyerésére egy String, XmlReader vagy XmlWriter objektumként.
XPathNavigator átalakítása sztringgé
Az OuterXml osztály tulajdonsága a XPathNavigator teljes XML-dokumentum korrektúráinak lekérésére szolgál, vagy csak egy csomópont és a gyermekcsomópontok korrektúráira.
Megjegyzés:
A InnerXml tulajdonság csak egy csomópont gyermekcsomópontjainak jelölését kapja meg.
Az alábbi példakód bemutatja, hogyan menthet egy XPathNavigator objektumban lévő teljes XML-dokumentumot, valamint Stringegyetlen csomópontot és annak gyermekcsomópontjait.
Dim document As XPathDocument = New XPathDocument("input.xml")
Dim navigator As XPathNavigator = document.CreateNavigator()
' Save the entire input.xml document to a string.
Dim xml As String = navigator.OuterXml
' Now save the Root element and its child nodes to a string.
navigator.MoveToChild(XPathNodeType.Element)
Dim root As String = navigator.OuterXml
XPathDocument document = new XPathDocument("input.xml");
XPathNavigator navigator = document.CreateNavigator();
// Save the entire input.xml document to a string.
string xml = navigator.OuterXml;
// Now save the Root element and its child nodes to a string.
navigator.MoveToChild(XPathNodeType.Element);
string root = navigator.OuterXml;
XPathNavigator konvertálása XmlReaderre
A ReadSubtree metódussal egy XML-dokumentum teljes tartalmát, vagy csak egyetlen csomópontot és annak gyermekcsomópontjait továbbíthatja egy XmlReader objektumba.
Amikor az objektum az XmlReader aktuális csomóponttal és annak gyermekcsomópontjaival jön létre, az XmlReader objektum tulajdonsága ReadState a következőre Initialvan állítva: . Amikor az XmlReader objektum Read metódusát először hívják meg, a XmlReader átkerül a XPathNavigator aktuális csomópontjára. Az új XmlReader objektum olvasása az XML-fa végéig folytatódik. Ekkor a Read metódus visszatér false, és az XmlReader objektum ReadState tulajdonsága EndOfFile értékre van állítva.
Az XPathNavigator objektum pozícióját a XmlReader objektum létrehozása vagy mozgása nem változtatja meg. A ReadSubtree metódus csak akkor érvényes, ha egy elemen vagy gyökércsomóponton van elhelyezve.
Az alábbi példa bemutatja, hogyan szerezhet be egy XmlReader objektumban XPathDocument a teljes XML-dokumentumot tartalmazó objektumot, valamint egyetlen csomópontot és annak gyermekcsomópontjait.
Dim document As XPathDocument = New XPathDocument("books.xml")
Dim navigator As XPathNavigator = document.CreateNavigator()
' Stream the entire XML document to the XmlReader.
Dim xml As XmlReader = navigator.ReadSubtree()
While xml.Read()
Console.WriteLine(xml.ReadInnerXml())
End While
xml.Close()
' Stream the book element and its child nodes to the XmlReader.
navigator.MoveToChild("bookstore", "")
navigator.MoveToChild("book", "")
Dim book As XmlReader = navigator.ReadSubtree()
While book.Read()
Console.WriteLine(book.ReadInnerXml())
End While
book.Close()
XPathDocument document = new XPathDocument("books.xml");
XPathNavigator navigator = document.CreateNavigator();
// Stream the entire XML document to the XmlReader.
XmlReader xml = navigator.ReadSubtree();
while (xml.Read())
{
Console.WriteLine(xml.ReadInnerXml());
}
xml.Close();
// Stream the book element and its child nodes to the XmlReader.
navigator.MoveToChild("bookstore", "");
navigator.MoveToChild("book", "");
XmlReader book = navigator.ReadSubtree();
while (book.Read())
{
Console.WriteLine(book.ReadInnerXml());
}
book.Close();
A példa a books.xml fájlt veszi bemenetként.
<?xml version="1.0" encoding="utf-8" ?>
<bookstore>
<book genre="autobiography" publicationdate="1981-03-22" ISBN="1-861003-11-0">
<title>The Autobiography of Benjamin Franklin</title>
<author>
<first-name>Benjamin</first-name>
<last-name>Franklin</last-name>
</author>
<price>8.99</price>
</book>
<book genre="novel" publicationdate="1967-11-17" ISBN="0-201-63361-2">
<title>The Confidence Man</title>
<author>
<first-name>Herman</first-name>
<last-name>Melville</last-name>
</author>
<price>11.99</price>
</book>
<book genre="philosophy" publicationdate="1991-02-15" ISBN="1-861001-57-6">
<title>The Gorgias</title>
<author>
<name>Plato</name>
</author>
<price>9.99</price>
</book>
</bookstore>
XPathNavigator konvertálása XmlWriter-re
A WriteSubtree metódussal egy XML-dokumentum teljes tartalmát, vagy csak egyetlen csomópontot és annak gyermekcsomópontjait továbbíthatja egy XmlWriter objektumba.
Az XPathNavigator objektum pozíciója az objektum létrehozásával nem változik XmlWriter .
Az alábbi példa bemutatja, hogyan szerezhet be egy XmlWriter objektumban XPathDocument a teljes XML-dokumentumot tartalmazó objektumot, valamint egyetlen csomópontot és annak gyermekcsomópontjait.
Dim document As XPathDocument = New XPathDocument("books.xml")
Dim navigator As XPathNavigator = document.CreateNavigator()
' Stream the entire XML document to the XmlWriter.
Dim xml As XmlWriter = XmlWriter.Create("newbooks.xml")
navigator.WriteSubtree(xml)
xml.Close()
' Stream the book element and its child nodes to the XmlWriter.
navigator.MoveToChild("bookstore", "")
navigator.MoveToChild("book", "")
Dim book As XmlWriter = XmlWriter.Create("book.xml")
navigator.WriteSubtree(book)
book.Close()
XPathDocument document = new XPathDocument("books.xml");
XPathNavigator navigator = document.CreateNavigator();
// Stream the entire XML document to the XmlWriter.
XmlWriter xml = XmlWriter.Create("newbooks.xml");
navigator.WriteSubtree(xml);
xml.Close();
// Stream the book element and its child nodes to the XmlWriter.
navigator.MoveToChild("bookstore", "");
navigator.MoveToChild("book", "");
XmlWriter book = XmlWriter.Create("book.xml");
navigator.WriteSubtree(book);
book.Close();
A példa a books.xml jelen témakörben korábban talált fájlt veszi bemenetként.