i think it may be being caused by the 'web:' bit in the node name? How to I get around this?
You should first define a self-made namespace of the xml node for web,and then use something like this:
XmlDocument dom =new XmlDocument(); dom.Load(@"E:\NET\xxxtest.xml"); XmlNamespaceManager xnm=new XmlNamespaceManager(dom.NameTable); xnm.AddNamespace("web", "Your URL of the web namespace's defination here");
var result = doc.SelectSingleNode("Tree/web:Website/@Total").InnerText;
jbear123
Member
558 Points
1256 Posts
xml selecting single node?
Feb 22, 2012 03:38 PM|LINK
Hi,
I am trying to dynamically select a single node from an xml file, but im getting an object not set error.
i think it may be being caused by the 'web:' bit in the node name? How to I get around this?
Here is some xml and my code, thanks! :
<Tree Version="2.2">
<Queue></Queue>
<web:Website>
<web:Total>1540</web:Total>
<web:Arb>0</web:Arb>
<web:Suede></web:Suede>
</web:Website>
</Tree>
total.Text = "Total: " + doc.SelectSingleNode("Tree/Website/@Total").InnerText;
santosh.jagd...
Star
7625 Points
1454 Posts
Re: xml selecting single node?
Feb 23, 2012 05:13 AM|LINK
why u are giving @ symbol before Total?
just remove and try.
if we specify @ in selecting path then we need give attribute value
plz mark as ANSWER if it helps u
MCP
jbear123
Member
558 Points
1256 Posts
Re: xml selecting single node?
Feb 23, 2012 09:30 AM|LINK
Yes sorry that wasn't meant to be there, i put it in by mistake whilst trying to make it work.
Removing it doesn't work - how about the 'web:Website' bit? Is that what's causing it?
Decker Dong ...
All-Star
118619 Points
18779 Posts
Re: xml selecting single node?
Feb 24, 2012 12:08 AM|LINK
You should first define a self-made namespace of the xml node for web,and then use something like this:
var result = doc.SelectSingleNode("Tree/web:Website/@Total").InnerText;
jbear123
Member
558 Points
1256 Posts
Re: xml selecting single node?
Feb 24, 2012 10:02 AM|LINK
Hi, Thanks.
I am using stream for my xml results, how would i make this work with stream? i have:
var uri = new Uri("http://api.com/");
System.Net.WebRequest request = System.Net.WebRequest.Create(uri);
System.Net.WebResponse response = request.GetResponse();
Stream stream = response.GetResponseStream();
System.Xml.XmlDocument doc = new System.Xml.XmlDocument();
doc.Load(stream);
XmlNamespaceManager xnm = new XmlNamespaceManager(doc.NameTable);
xnm.AddNamespace("web", uri);
totalresults.Text = "Results: " + doc.SelectSingleNode("SearchResponse/web:Web/@Total").InnerText;
Decker Dong ...
All-Star
118619 Points
18779 Posts
Re: xml selecting single node?
Feb 24, 2012 11:57 PM|LINK
Hello:)
You can try to read out the xml contents and do the following things:
jbear123
Member
558 Points
1256 Posts
Re: xml selecting single node?
Feb 27, 2012 10:16 AM|LINK
hi, thanks for your help.
I'm getting an error:
Namespace Manager or XsltContext needed. This query has a prefix, variable, or user-defined function.
Is this line right? If not, what do I need instead of my uri?:
xnm.AddNamespace("web", uri);
Thanks again!
kuber.manral
Contributor
3051 Points
714 Posts
Re: xml selecting single node?
Feb 27, 2012 11:02 AM|LINK
Hi,
Please find the sample as follows :
string _orgXM = System.IO.File.ReadAllText(Server.MapPath("~/XML/XMLFile2.xml"));
XmlDocument _xmlDOc = new XmlDocument();
_xmlDOc.LoadXml(_orgXM.ToString());
XmlNamespaceManager namespaceManager = new XmlNamespaceManager(_xmlDOc.NameTable);
namespaceManager.AddNamespace("a10", "http://www.w3.org/2005/Atom");
XmlNodeList MyRssList = _xmlDOc.SelectNodes("rss/channel/item");
XmlNode MyRssDetail;
MyRssDetail = MyRssList.Item(0).SelectSingleNode("a10:updated", namespaceManager);
Response.Write("a10:updated : " + MyRssDetail.InnerText);
Also make a review of following Thread :
http://forums.asp.net/t/1774053.aspx/1?Not+Abe+to+Read+Xml+Date+Node
Hope it helps..
Visit My Blog
jbear123
Member
558 Points
1256 Posts
Re: xml selecting single node?
Feb 28, 2012 12:01 PM|LINK
Hi, thanks.
I am still unable to make this work, im getting an object not set error now.. not sure what i'm doing wrong? Could you have a look?
System.Net.WebRequest request = System.Net.WebRequest.Create(uri); System.Net.WebResponse response = request.GetResponse(); Stream stream = response.GetResponseStream(); StreamReader sr = new StreamReader(stream); string xmlcontents = sr.ReadToEnd(); System.Xml.XmlDocument doc = new System.Xml.XmlDocument(); doc.LoadXml(xmlcontents); XmlNamespaceManager xnm = new XmlNamespaceManager(doc.NameTable); xnm.AddNamespace("web:Web", "http://www.w3.org/2005/Atom"); XmlNodeList MyRssList = doc.SelectNodes("SearchResponse/Web"); XmlNode MyRssDetail; MyRssDetail = MyRssList.Item(0).SelectSingleNode("web:Total", xnm); totalresults.Text = ("Results: " + MyRssDetail.InnerText);from the xml:
<SearchResponse Version="2.2"> <Query> <SearchTerms>hippo</SearchTerms> </Query> <web:Web> <web:Total>49300000</web:Total>kuber.manral
Contributor
3051 Points
714 Posts
Re: xml selecting single node?
Feb 28, 2012 12:32 PM|LINK
Hi Jbear123,
just a shot, because i don't have IDE to test right now. Change something like :
xnm.AddNamespace("web:Web", "http://www.w3.org/2005/Atom");
to:-->>
xnm.AddNamespace("web", "http://www.w3.org/2005/Atom");
Hope it helps...
Visit My Blog