|
Ziga1 wrote: get all the information I need from the HTMLDocument and IHTMLDocument2.
Unnecessary, all you need is to get the WebResponse from a WebRequest.
What are you trying to accomplish with the JavaScript? I know the language. I've read a book. - _Madmatt
|
|
|
|
|
Could you explain this? I don't see a way to get the parsed HTML directly from a WebResponse
|
|
|
|
|
|
Parsing the HTML by hand, ok, but surely that wouldn't be the best way all the time (maybe he needs a complete DOM tree? to me that seems likely, seeing as he even wants to parse the javascript)
edit: I wrote this post before reading his second post
|
|
|
|
|
Thats exactly what I would like .
As I said, geting the complete HTML DOM tree is not that hard.
But the script part is shown as one element. Maybe I overlooked something, but for now it seems that the script part is only accessible as the inner HTML of the element.
Thats my question. Is it possible to access and identify the elements inside the javascript part otherwise than to parse it as a raw string?
|
|
|
|
|
AFAIK there is no method to parse the javascript other than to process the string. Using a Regular Expression this shouldn't be that difficult and I would agrue easier with the string returned by WebRequest rather than walking the DOM in an HTMLDocument I know the language. I've read a book. - _Madmatt
|
|
|
|
|
Ziga1 wrote: Is it possible to access and identify the elements inside the javascript part otherwise than to parse it as a raw string?
Not that I know of. Microsoft provides a scripting library that can parse and execute JavaScript, but as far as I've been able to find out it doesn't let you have the AST (or something similar).
|
|
|
|
|
There is no such DOM for JavaScript as there is for HTML. HTML is easy. It kind of resembles XML, with a tree of markup tags. Java has no such easy structure. It's more like C# and VB.NET. There are object models for those, Visual Studio uses them. But, Visual Studio does not have a DOM for JavaScript, nor does the .NET Framework.
The closest you may get is to research Sun's options and see if they have an equiv' DOM that you can use. Don't get your hopes up though...
|
|
|
|
|
WebResponse gives you the complete DOM tree. What more do you want? I know the language. I've read a book. - _Madmatt
|
|
|
|
|
|
You're correct, it does not create a DOM tree as far as objects like a HTMLDocument, it's not intended to do so, however; the stream contains all elements of the DOM which can be loaded into a XDocument, or XMLDocument, and parsed in that manner, which IMO, is a better approach for the OP I know the language. I've read a book. - _Madmatt
|
|
|
|
|
Does that really work? Last time I checked, HTML made XmlDocument very angry, and it refused to parse it.
|
|
|
|
|
I stand corrected. It's been a while since I tried it last. Thought XDocument was more forgiving. I know the language. I've read a book. - _Madmatt
|
|
|
|
|
Since my test application is a simple web browser its easier to just get the formatted source code from the HTMLDocument that is included in the web browser anyway (at least I think it is).
On the side I wanted to show the document structure and since its already served on a silver plate, building a html element tree and showing it within an TreeView was simple.
I hoped to find a similar way for showing the structure of the included javascript source code (this time I don't have in mind any kind of a tree, but just the function names maybe also variable names,...).
I don't mind to write my own parser, but if there is a better solution, why re-invent the wheel
|
|
|
|
|
Thx for the replies.
I got all the answers I needed and much more.
|
|
|
|
|
Been looking for quite some time for the answer to my question.
How do I do this in C#:
[Client]
SendToServer(ClientActions.Login, username, password);
[Server]
ReceiveRequest(Tag, pram1, pram2);
if (tag == ClientActions.Login)
{
bool exUser = UserExist(pram1, pram2);
if (exUser)
SendToClient(ServerAction.Exist);
else
SendToClient(ServerAction.NotExist);
}
[Client]
ReceiveResponse(Response);
if (Response == ServerAction.Exist)
else
I am trying to setup a MultiPerson game using C# as my primary. Currently I have the client access the database directly because I have found no tutorials explaining how to this sort of thing. Mostly I have found Chat servers which do not help me figure this problem out. I have been able to do the above using alternate means, but since I will need to do more than send a few simple strings, I have no clue how to do it...
My main issue is figuring out how to get both the client and the server to know how to deal with whatever comes down the pipe. My progression after the above would have been to ask the server for the userdata and have the server send a List<player> object back. But I don't know how to do it.
I would appreciate any and all help for this.
|
|
|
|
|
As said, use Remoting or WCF.
But, you will not:
SendToServer
And then
ReceiveResponse
You will:
CallMethod(parameters)
And such method can have a return type, so you get the response automatically.
|
|
|
|
|
Along with the other replies, I strongly recommend using WCF to do this. Imho it's easy, reliable and flexible.
/ravi
|
|
|
|
|
Okay, so WCF is the way to go. And, as I said, it is Pseudo code. ^_^ It shows what I expect the server to do, not exactly what it will do.
So, how would I go about using WCF with my example as the start? IE a simple Return of a Bool... I just need to see an example that doesn't rely on a string... ^_^
One more thing. How do you get it to listen for more than one thing. I would think it would have to do with the Channel... But not sure.
Thank you for your prior help and for any further help you can provide.
Nevermind, I figured it out, I think. You just add more Functions to the Interface... Now I just need to find a cheap Windows Server to test it on...
EDIT:: I can't seem to get it to report errors other than System.ServiceModel errors. I missed a MySQL error because All I got from the Debugger was that an Internal error occurred... Not a big deal, but a bit annoying...modified on Monday, February 22, 2010 8:18 PM
|
|
|
|
|
Seems I do need more help after all. I have 2 main issues. The first is that I get different results when using the .NET 3.5 Framework and the .NET 4.0 Framework. The app functions correctly in 4.0 but returns a few odd things in 3.5. While all in all it doesn't matter, I'm using 4.0 as the primary anyway, it does pose a problem on the end-user. 3.5 is standard but 4.0 is in beta4 so most will not touch it.
My second problem is this:
System.ServiceModel.CommunicationObjectFaultedException: The communication object,
System.ServiceModel.ServiceHost, cannot be used for communication because it is in the Faulted state.
at System.ServiceModel.Channels.CommunicationObject.Close(TimeSpan timeout)
at System.ServiceModel.ServiceHostBase.System.IDisposable.Dispose()
at Impur.Game.Network.Server.Program.Main(String[] args)
Now, I understand the error. It is because I went the Using route when making my ServiceHost. My problem is that I don't know hot to do it another way. Now, my app works perfectly on my computer, but gives that error on my Dev Tester's computer.
Here is the code I use. Maybe you can tell me how to do it another way:
using (ServiceHost host = new ServiceHost(
typeof(Actions),
new Uri[]{
new Uri("http://localhost:8000"),
new Uri("net.pipe://localhost")
}))
EDIT:: Fixed the Second problem and have now encountered:
System.ServiceModel.AddressAccessDeniedException: HTTP could not register URL http:
process does not have access rights to this namespace (see http:
for details). ---> System.Net.HttpListenerException: Access is denied
This one I have no clue about.
|
|
|
|
|
Hi,
I am creating C# asp.net web page. I have encountered problems to show correct date on the web page.
I have done the following codes to show the date for the next few days. However, it will come out like 32/2/2010 if I did it like following codes.
Is there any solution to show correct date to solve my error?
protected void Page_Load(object sender, EventArgs e)
{
int day = Convert.ToInt32(DateTime.Now.Day);
int month = Convert.ToInt32(DateTime.Now.Month);
int year = Convert.ToInt32(DateTime.Now.Year);
lblDatePG.Text = day + "/" + month + "/" + year;
hlTmr.Text = day + 1 + "/" + month + "/" + year;
hlDay2.Text = day + 2 + "/" + month + "/" + year;
hlDay3.Text = day + 3 + "/" + month + "/" + year;
hlDay4.Text = day + 4 + "/" + month + "/" + year;
hlDay5.Text = day + 5 + "/" + month + "/" + year;
hlDay6.Text = day + 6 + "/" + month + "/" + year;
}
Thanks.
|
|
|
|
|
Just to add to stancrms' answer, if you are ever using DateTime.Now always take a local copy first, just the way he does:
DateTime dtNow = DateTime.Now; and then work from that. If you don't, then you can get intermittent bugs since DateTime.Now is not fixed - it can change between two successive calls.
For example, if it is 31st December 2010 at 23:59:59 and you call DateTime.Now the result could be in 2010 or 2011. This can be annoying to find, especially when the difference is an hour or so, or Summer Time ends and the clocks go back!You should never use standby on an elephant. It always crashes when you lift the ears. - Mark Wallace
C/C++ (I dont see a huge difference between them, and the 'benefits' of C++ are questionable, who needs inheritance when you have copy and paste) - fat_boy
|
|
|
|
|
how can i send files with Skype4COM.dll?
|
|
|
|
|
I'm sure it has some kind of documentation. Read it.
Try some dedicated forums four your Skype4COM.dll.
Maybe the place where you got/downloaded it?
|
|
|
|
|