Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Istnieje kilka różnych sposobów reprezentowania dokumentu XML w programie Microsoft .NET Framework. Obejmuje to używanie String lub klasy XmlReader, XmlWriter, XmlDocument lub XPathDocument. Aby ułatwić przechodzenie między tymi różnymi reprezentacjami dokumentu XML, XPathNavigator klasa udostępnia wiele metod i właściwości wyodrębniania kodu XML jako StringXmlReader obiektu lub XmlWriter obiektu .
Konwertuj XPathNavigator na String
Właściwość OuterXml klasy XPathNavigator jest używana do uzyskania znaczników całego dokumentu XML lub tylko znaczników pojedynczego węzła i jego węzłów podrzędnych.
Uwaga / Notatka
Właściwość InnerXml pobiera znaczniki tylko dla węzłów podrzędnych danego węzła.
Poniższy przykład kodu pokazuje, jak zapisać cały dokument XML zawarty w XPathNavigator obiekcie jako String, a także jeden węzeł i jego węzły podrzędne.
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;
Przekształcanie obiektu XPathNavigator na obiekt XmlReader
Metoda ReadSubtree służy do przesyłania strumieniowego całej zawartości dokumentu XML lub tylko jednego węzła i jego węzłów podrzędnych XmlReader do obiektu.
Gdy obiekt XmlReader jest tworzony z bieżącym węzłem i jego węzłami podrzędnymi, właściwość XmlReader obiektu ReadState jest ustawiona na Initial. Gdy metoda XmlReader obiektu Read jest wywoływana po raz pierwszy, XmlReader jest przenoszony do bieżącego węzła XPathNavigator. Nowy XmlReader obiekt będzie nadal odczytywany do końca drzewa XML. W tym momencie metoda Read zwraca false, a właściwość XmlReader obiektu ReadState jest ustawiona na EndOfFile.
XPathNavigator Położenie obiektu pozostaje niezmienione przez utworzenie lub przenoszenie XmlReader obiektu. Metoda ReadSubtree jest prawidłowa tylko wtedy, gdy jest umieszczona na elemencie lub węźle głównym.
W poniższym przykładzie pokazano, jak uzyskać obiekt XmlReader zawierający cały dokument XML, obiekt XPathDocument, a także jeden węzeł wraz z jego węzłami podrzędnymi.
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();
Przykład przyjmuje plik books.xml jako dane wejściowe.
<?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>
Konwertowanie obiektu XPathNavigator na XmlWriter
Metoda WriteSubtree służy do przesyłania strumieniowego całej zawartości dokumentu XML lub tylko jednego węzła i jego węzłów podrzędnych XmlWriter do obiektu.
XPathNavigator Położenie obiektu pozostaje niezmienione przez utworzenie XmlWriter obiektu.
W poniższym przykładzie pokazano, jak uzyskać obiekt XmlWriter zawierający cały dokument XML, obiekt XPathDocument, a także jeden węzeł wraz z jego węzłami podrzędnymi.
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();
Przykład przyjmuje jako dane wejściowe plik books.xml znaleziony wcześniej w tym temacie.
Zobacz także
- XmlDocument
- XPathDocument
- XPathNavigator
- Przetwarzanie danych XML przy użyciu modelu danych XPath
- Nawigacja zestawu węzłów przy użyciu klasy XPathNavigator
- Nawigacja po węźle atrybutów i przestrzeni nazw za pomocą XPathNavigator
- Uzyskiwanie dostępu do silnie typiowanych danych XML przy użyciu klasy XPathNavigator