Händelser
17 mars 21 - 21 mars 10
Gå med i mötesserien för att skapa skalbara AI-lösningar baserat på verkliga användningsfall med andra utvecklare och experter.
Registrera dig nuDen här webbläsaren stöds inte längre.
Uppgradera till Microsoft Edge och dra nytta av de senaste funktionerna och säkerhetsuppdateringarna, samt teknisk support.
Om du vill använda XPath-frågor med XML-dokument måste du korrekt adressera XML-namnområden och de element som ingår i namnområden. Namnområden förhindrar tvetydigheter som kan uppstå när namn används i mer än en kontext. Namnet ID
kan till exempel referera till mer än en identifierare som är associerad med olika element i ett XML-dokument. Namnområdessyntaxen anger URI:er, namn och prefix som särskiljer elementen i ett XML-dokument.
Exemplet i det här avsnittet visar hur prefix används för att navigera i ett XML-dokument med XPathNavigator. Mer information om namnområden och syntax finns i XML-filer: Förstå XML-namnområden.
Namnområdesdeklarationer gör elementen i ett XML-dokument åtskiljbara och adresserbara när du använder en instans av XPathNavigator. Namnområdesprefix ger en kort syntax för adressering av namnområden.
Prefix definieras av formuläret: <e:Envelope xmlns:e=http://schemas.xmlsoap.org/soap/envelope/>.
I den här syntaxen är prefixet "e
" en förkortning av namnområdets formella URI. Du kan identifiera elementet Body
som medlem i Envelope
namnområdet med hjälp av syntaxen: e:Body
.
Följande XML-dokument refereras som response.xml
i navigeringsexemplet i nästa avsnitt.
<?xml version="1.0" encoding="utf-8" ?>
<e:Envelope xmlns:e="http://schemas.xmlsoap.org/soap/envelope/">
<e:Body>
<s:Search xmlns:s="http://schemas.microsoft.com/v1/Search">
<r:request xmlns:r="http://schemas.microsoft.com/v1/Search/metadata"
xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
</r:request>
</s:Search>
</e:Body>
</e:Envelope>
Koden i det här avsnittet använder XPathNavigator och XmlNamespaceManager objekt för att välja elementet Search
från XML-dokumentet i föregående avsnitt. Frågan xpath
innehåller namnområdesprefix för varje element i sökvägen. Om du anger den exakta identiteten för de namnområden som innehåller varje element garanteras korrekt navigering till elementet Search
med SelectSingleNode metoden .
using (XmlReader reader = XmlReader.Create("response.xml"))
{
XPathDocument doc = new XPathDocument(reader);
XPathNavigator nav = doc.CreateNavigator();
XmlNamespaceManager nsmgr = new XmlNamespaceManager(nav.NameTable);
nsmgr.AddNamespace("e", @"http://schemas.xmlsoap.org/soap/envelope/");
nsmgr.AddNamespace("s", @"http://schemas.microsoft.com/v1/Search");
nsmgr.AddNamespace("r", @"http://schemas.microsoft.com/v1/Search/metadata");
nsmgr.AddNamespace("i", @"http://www.w3.org/2001/XMLSchema-instance");
string xpath = "/e:Envelope/e:Body/s:Search";
XPathNavigator element = nav.SelectSingleNode(xpath, nsmgr);
Console.WriteLine("Element Prefix:" + element.Prefix +
" Local name:" + element.LocalName);
Console.WriteLine("Namespace URI: " + element.NamespaceURI);
}
Precisionen för fullständigt kvalificerade namnområden och namn är mer än en bekvämlighet. En liten experimentering med dokumentdefinitionen och koden i föregående exempel verifierar att navigering utan fullständigt kvalificerade elementnamn genererar undantag. Till exempel returnerar elementdefinitionen: <Search xmlns="http://schemas.microsoft.com/v1/Search">
, och fråga: sträng xpath = "/s:Envelope/s:Body/Search";
utan namnområdesprefixet på elementet Search
i stället för elementetSearch
.null
Feedback om .NET
.NET är ett öppen källkod projekt. Välj en länk för att ge feedback:
Händelser
17 mars 21 - 21 mars 10
Gå med i mötesserien för att skapa skalbara AI-lösningar baserat på verkliga användningsfall med andra utvecklare och experter.
Registrera dig nu