|
web
newsgroups
|
|||||||||||||||||||||||
|
|||||||||||||||||||||||
Problem using default xml namespace and selectsignlenode/selectnodI am verifying a SLD implementation using xml, however I have som problem using xpath and default namespaces in vb.net Currently I have the following xml <?xml version="1.0"?> <StyledLayerDescriptor version="1.0.0" xsi:schemaLocation="http://www.opengis.net/sld http://schemas.opengis.net/sld/1.0.0/StyledLayerDescriptor.xsd" xmlns:sld="http://www.opengis.net/sld" xmlns:ogc="http://www.opengis.net/ogc" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <Name>TestName</Name> <Title>TestTitle</Title> <Abstract>TestAbstract</Abstract> </StyledLayerDescriptor> and the following code to read it: Dim writer As Xml.XmlTextWriter = New Xml.XmlTextWriter(file, Nothing) doc.Load(file) where file is the location of the xml and doc is a xmldocument objekt I ask with: Dim r As Xml.XmlNode = doc.SelectSingleNode("/StyledLayerDescriptor/Name") Console.WriteLine("Name " & r.InnerXml) The return value is nothing, any clue of why??? If I dont use default namespace, then it can be found. rrm rrm wrote:
> Dim r As Xml.XmlNode = doc.SelectSingleNode("/StyledLayerDescriptor/Name") You need a namespace manager e.g.> The return value is nothing, any clue of why??? If I dont use default > namespace, then it can be found. Dim namespaceManager As XmlNamespaceManager =_ new XmlNamespaceManager(doc.NameTable) namespaceManager.AddNamespace("pf", "default namespace URI here") then e.g. doc.SelectSingleNode("/pf:StyledLayerDescriptor/pf:Name",_ namespaceManager) Hi
> You need a namespace manager e.g. ok> Dim namespaceManager As XmlNamespaceManager =_ > new XmlNamespaceManager(doc.NameTable) > namespaceManager.AddNamespace("pf", "default namespace URI here") > then e.g. > doc.SelectSingleNode("/pf:StyledLayerDescriptor/pf:Name",_ > namespaceManager) I found an error in my posting: xmlns:sld=... should be xmlns=... <StyledLayerDescriptor version="1.0.0" xsi:schemaLocation="http://www.opengis.net/sld http://schemas.opengis.net/sld/1.0.0/StyledLayerDescriptor.xsd" xmlns="http://www.opengis.net/sld" xmlns:ogc="http://www.opengis.net/ogc" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> Would that help me to avoid using namespace "ns:" in selectsinglenode??? Are there any different in the way dotnet 1 and dotnet 2 handles this?? rrm wrote:
> I found an error in my posting: xmlns:sld=... should be xmlns=... You need to use a namespace manager if you want to select elements or > Would that help me to avoid using namespace "ns:" in selectsinglenode??? attributes in a namespace. An XPath (1.0) expression in the form of e.g. element-name only selects elements of that name in _no_ namespace. If your elements are in a namespace then you need a namespace manager that binds a prefix to the namespace URI and then you need to use that prefix in the XPath expression e.g. pf:element-name See also "Namespaces in XPath Expressions" in <http://msdn2.microsoft.com/en-us/library/d271ytdx.aspx> |
|||||||||||||||||||||||