C# / VB .Net language incompatibilities

G

Gary Dunne

Hi,

Sorry if this is deemed to be a cross post (I also posted to the
microsoft.public.xml)

(Using .NET 2003, VB, C# on a Win2k PC)

I'm trying to retrieve nodes from an XML doc by name. I have found that the
following code, when translated into C# works perfectly, but not when used
in VB. In the example below the "application" node returns a value when
accessed through the C# code but not with the VB code.

If I add a prefix to the namespace in the source XML doc e.g. Change
<application xmlns="http://MyCompanyName.co.uk/test/1.0.08/">
to <application xmlns:TEST="http://MyCompanyName.co.uk/test/1.0.08/">
then it works fine in both languages.

Does anyone have experience of this problem ?

Below are the code samples from both languages... followed by the XML
excerpt

Thanks

Gary


VB Code --

****

Imports System
Imports System.Xml
Module Module1

Sub Main()

Try
Dim oXmlDoc As New Xml.XmlDocument
Dim sFileName As String = "04231ESWM001240.xml"

oXmlDoc.Load(sFileName)

Dim nsmgr As XmlNamespaceManager = New
XmlNamespaceManager(oXmlDoc.NameTable)

nsmgr.AddNamespace("clps",
"http://MyCompanyName.co.uk/test/1.0.08")
nsmgr.AddNamespace("xsi",
"http://www.w3.org/2001/XMLSchema-instance")
nsmgr.AddNamespace("xsd", "http://www.w3.org/2001/XMLSchema")
nsmgr.AddNamespace("soap",
"http://schemas.xmlsoap.org/soap/envelope/")

Console.WriteLine("Def NS = " & nsmgr.DefaultNamespace)

Dim oNode As Xml.XmlNode
oNode = oXmlDoc.SelectSingleNode("//application", nsmgr)

If oNode Is Nothing Then
Console.WriteLine("The application object was not found")
Else
Console.WriteLine(oNode.InnerText)
End If


Finally
Console.WriteLine("Press a key to end")
Console.Read()
End Try
End Sub


and the C# version ****

using System;
using System.Xml;
namespace TestXML
{
class Class1
{
ry>
[STAThread]
static void Main(string[] args)
{
XmlDocument xmlRequest = new XmlDocument();
xmlRequest.Load(@"N:\04231ESWM001240.xml");
XmlNamespaceManager nsMgr = new XmlNamespaceManager(xmlRequest.NameTable);
nsMgr.AddNamespace("clps","http://MyCompanyName.co.uk/test/1.0.08/");
nsMgr.AddNamespace("xsi","http://www.w3.org/2001/XMLSchema-instance");
nsMgr.AddNamespace("xsd","http://www.w3.org/2001/XMLSchema");
nsMgr.AddNamespace("soap","http://schemas.xmlsoap.org/soap/envelope/");
Console.WriteLine("nsMgr.DefaultNamespace: " + nsMgr.DefaultNamespace);
XmlNode applicationNode = xmlRequest.SelectSingleNode("//application",
nsMgr);
if (applicationNode == null)
{
Console.WriteLine("application not found");
}
else
{
Console.WriteLine(applicationNode.InnerText.Trim());
}
Console.WriteLine(">>>Press a key to end");
Console.ReadLine();
}
}
}

XML *****

<?xml version="1.0"?>
<AppRoot xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<application xmlns="http://MyCompanyName.co.uk/test/1.0.08/">
<docid>04231ESWM001240</docid>
<applicationerror>false</applicationerror>
<HoldIndicator>false</HoldIndicator>
<field>
<name>TextReg1</name>
<text>STEP</text>
<error>false</error>
</field>
<field>
<name>portfolio_link_code</name>
<text>STEP</text>
<error>false</error>
</field>
</application>
</AppRoot>
 
J

Jeff Johnson [MVP: VB]

Sorry if this is deemed to be a cross post (I also posted to the
microsoft.public.xml)

Actually, to be technical, it's a multipost, which is very bad. Here's my
standard blurb to give you more info:

You have posted this question individually to multiple groups. This is
called Multiposting and it's BAD. Replies made in one group will not be
visible in the other groups, which may cause multiple people to respond to
your question with the same answer because they didn't know someone else had
already done it. This is a waste of time.

If you MUST post your message to multiple groups, post a single message and
select all the groups (or type their names manually, separated by commas) in
which you want it to be seen. This is called Crossposting and when used
properly it is GOOD.

(This isn't just my opinion. Look here:
http://www.oakroadsystems.com/genl/unice.htm#xpost)
 
C

Cor Ligthert

Hi Gary,

Thanks for replying this, because I would get finding out what was wrong.

And for the rest had set the same sentence as Jeff about crossposting.

:)

Cor
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top