Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Существует несколько различных способов представления XML-документа в Microsoft .NET Framework. К ним относятся использование Stringили использование XmlReaderклассов , XmlWriterXmlDocumentили XPathDocument классов. Чтобы упростить перемещение между этими различными представлениями XML-документа, XPathNavigator класс предоставляет ряд методов и свойств для извлечения XML в виде StringXmlReader объекта или XmlWriter объекта.
Преобразовать XPathNavigator в строку
Свойство OuterXmlXPathNavigator класса используется для получения разметки всего XML-документа или просто разметки одного узла и дочерних узлов.
Замечание
Свойство InnerXml возвращает разметку только дочерних узлов узла.
В следующем примере кода показано, как сохранить весь XML-документ, содержащийся в XPathNavigator объекте как Stringобъект, а также один узел и его дочерние узлы.
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 в XmlReader
Метод ReadSubtree используется для потоковой передачи всего содержимого XML-документа или только одного узла и его дочерних узлов в XmlReader объект.
XmlReader При создании объекта с текущим узлом и дочерними узлами XmlReader свойство объекта ReadState имеет значение Initial. Когда метод XmlReader объекта Read вызывается в первый раз, XmlReader перемещается на текущий узел XPathNavigator. Новый XmlReader объект продолжает читаться до конца XML-дерева. На этом этапе метод Read возвращает false, а свойству XmlReader объекта ReadState присваивается значение EndOfFile.
Позиция XPathNavigator объекта не изменяется путем создания или перемещения XmlReader объекта. Метод ReadSubtree действителен только при расположении на элементе или корневом узле.
В следующем примере показано, как получить XmlReader объект, содержащий весь XML-документ в XPathDocument объекте, а также один узел и его дочерние узлы.
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();
Пример принимает файл books.xml в качестве входных данных.
<?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 в XmlWriter
Метод WriteSubtree используется для потоковой передачи всего содержимого XML-документа или только одного узла и его дочерних узлов в XmlWriter объект.
Позиция XPathNavigator объекта не изменяется путем создания XmlWriter объекта.
В следующем примере показано, как получить XmlWriter объект, содержащий весь XML-документ в XPathDocument объекте, а также один узел и его дочерние узлы.
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();
Пример принимает файл, найденный books.xml ранее в этом разделе, в качестве входных данных.