Question

Je suis l'analyse d'un fichier Xml. et j'ai eu un trouble sur la façon d'utiliser XPathNodeIterator MoveNext() plus raisonnable en C # 2.0.

Mon code comme ceci,

while (it.MoveNext())
{


string str = it.Current.GetAttribute("id", it.Current.NamespaceURI);

it.Current.MoveToChild("item", "");

// do someting....
// My XMl file is a complex Xml file. I must Move to multi layer Child with *MoveToChild()*.
// After that, I must add several *MoveToParent()* in different Layers to make sure the *it* still meet for the use of while loop.
// I think it doesn't make sense like this.
// Some time. the *it* can't still direct to my original layer. While-Loop doesn't work well.

}

J'ai essayé de déclarer un nouvel objet XPathNodeIterator Tempit ce,

while (it.MoveNext())
{

    XPathNodeIterator tempIt;
    tempIt= it;

    string str = tempIt.Current.GetAttribute("id", tempIt.Current.NamespaceURI);

    tempIt.Current.MoveToChild("item", "");

    // Now I chech *it* on here, I found the *it* also changed it's *current* and "position". and it's count also changed. 
    // I don't know why.

}

Comment puis-je résoudre ce problème?

Apprécié pour vous les commentaires et suggestions.

Était-ce utile?

La solution

Peut-être que l'aide de la boîte

while (nodeIterator.MoveNext())
{
    XPathNavigator n = nodeIterator.Current;
    Console.WriteLine(n.LocalName);
}


XPathDocument document = new XPathDocument("books.xml");
XPathNavigator navigator = document.CreateNavigator();

XPathNodeIterator nodes = navigator.Select("/bookstore/book");
nodes.MoveNext();
XPathNavigator nodesNavigator = nodes.Current;

XPathNodeIterator nodesText = nodesNavigator.SelectDescendants(XPathNodeType.Text, false);

while (nodesText.MoveNext())
    Console.WriteLine(nodesText.Current.Value);

et 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>
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top