|
Oh, I think I've been unclear.
It's not the same implementation for both examples.
It was just a showcase for two different xml files, that both will be handled in their
own implementation.
At least i don't know how to handle exmple 2 as example 1 works fine.
Here again a different xml example with the same problematic
With my kind of implementation i'm able to deserialize an xml like this:
="1.0"
<root>
<project project_id="16576">
<project_id><![CDATA[</project_id>
<name><![CDATA[</name>
<active><![CDATA[</active>
</project>
<root>
<root>
<project project_id="16577">
<project_id><![CDATA[</project_id>
<name><![CDATA[</name>
<active><![CDATA[</active>
</project>
<root>
I have an class List<item> with an class Item
and in List<t> i have the method to deserialize and with the given root information,
and the given <xmltype> and so on I'm able to deserialize every xml file, that has a list of tags
like above...
Now I have an xml file (complete different file and implementaion, means i would write other two classes for it)
that doesn't start directly with the needed list of data after the <root> node but later in the hierarchy
example again:
<rootX>
<data1>some info here</data1>
<data2>some info there</data2>
<coolList>
<item kw="online email marketing" position="14" competition="0" traffic="5" url="http://www.marmato.de/"></result>
<item kw="listbroking" position="20" competition="50" traffic="20" url="http://www.marmato.de/leistungen/e-mail-marketing/listbroking.html">
</coolList>
I'm interested in the <coollist> and it's items. So how do i have to change my implementation to get out this list?
I hope i could clarify.
|
|
|
|
|
The only way for the XML deserializer to read a <rootx> tag is to have a class with the correct definition, e.g. XmlRootX, which defines the entire tag.
If you think about it, the deserializer has to work this way. If it worked according to your suggestion, there would be no way to tell the difference between the valid XML code above and invalid XML code such as:
<rootX>
<data1> some info here </data1>
<badData327> more info here </badData327>
<coolList>
<item ... />
<item ... />
</coolList>
</rootX>
If you have an important point to make, don't try to be subtle or clever. Use a pile driver. Hit the point once. Then come back and hit it again. Then hit it a third time - a tremendous whack.
--Winston Churchill
|
|
|
|
|
I looked over your "test app" but did not run it.
Your class definitions and the way you are looking at the xml appear flawed (e.g. the "response" is a high level container that contains a "list"; "response" is NOT a "list" as your class definitions seem to imply).
It would have been easier to "Edit | Paste special | Xml as classes" in Visual Studio. Doing that, I got the following for your "not working XML":
[System.Xml.Serialization.XmlTypeAttribute( AnonymousType = true )]
[System.Xml.Serialization.XmlRootAttribute( Namespace = "", IsNullable = false )]
public partial class response {
private string methodField;
private responseResult[] answerField;
public string method {
get {
return this.methodField;
}
set {
this.methodField = value;
}
}
[System.Xml.Serialization.XmlArrayItemAttribute( "result", IsNullable = false )]
public responseResult[] answer {
get {
return this.answerField;
}
set {
this.answerField = value;
}
}
}
[System.Xml.Serialization.XmlTypeAttribute( AnonymousType = true )]
public partial class responseResult {
private string firstField;
private byte secondField;
private byte thirdField;
[System.Xml.Serialization.XmlAttributeAttribute()]
public string first {
get {
return this.firstField;
}
set {
this.firstField = value;
}
}
[System.Xml.Serialization.XmlAttributeAttribute()]
public byte second {
get {
return this.secondField;
}
set {
this.secondField = value;
}
}
[System.Xml.Serialization.XmlAttributeAttribute()]
public byte third {
get {
return this.thirdField;
}
set {
this.thirdField = value;
}
}
}
|
|
|
|
|
Hello,
I am using IE11
I would like to know the registry entries to check/uncheck the Properties "Use TLS 1.0, Use TLS 1.1, Use TLS 1.2. Also, the registry entry for uncheck/check the "Display intranet sites in compatibility view" under Tools/Compatibility Settins
Thanks for your help,
|
|
|
|
|
I don't see anything to do with C# in this question.
|
|
|
|
|
Well, i did the setting for IE9 using C#. If i do not know the entries i cannot move forward though. Thanks,
|
|
|
|
|
Did you know that you can easily find this information out for yourself? Use a utility such as RegShot[^] to take a snapshot of the registry, then make your changes. Take another snapshot, and it will output the items that changed.
|
|
|
|
|
|
Following is the working code which decodes UUEncoded information to the correct hex value:
Code:
string input = "MTA0ODU3NjAA=";
byte[] decoded = Convert.FromBase64String(input.TrimEnd(new char[] { '=' }));
String value = ASCIIEncoding.ASCII.GetString(decoded);
int output = Convert.ToInt32(value);
string temp = String.Format("{0:X02}{1:X02}{2:X02}", (output & 0xFF0000FF) >> 0, (output & 0xFF00FF00) >> 8, (output & 0xFFFF0000) >> 16);
Output: temp = "0000A0";
I am looking for help to reverse this process. Input: "0000A0" and get output as: "MTA0ODU3NjAA", since '=' are used for padding only.
|
|
|
|
|
And?
What help do you need?
What have you tried?
Where are you stuck?
Bad command or file name. Bad, bad command! Sit! Stay! Staaaay...
|
|
|
|
|
I wrote the initial logic of converting the UUEncoded data to hex value. This hex value is being used in C# code.
Now I want to save it back as UUEncoded data. I am not sure how to reverse engineer it. Need some advise.
|
|
|
|
|
You wrote this:
string input = "MTA0ODU3NjAA=";
byte[] decoded = Convert.FromBase64String(input.TrimEnd(new char[] { '=' }));
String value = ASCIIEncoding.ASCII.GetString(decoded);
int output = Convert.ToInt32(value);
string temp = String.Format("{0:X02}{1:X02}{2:X02}", (output & 0xFF0000FF) >> 0, (output & 0xFF00FF00) >> 8, (output & 0xFFFF0000) >> 16);
And you can't reverse it?
Um. What part of the two relevant lines can't you understand?
Bad command or file name. Bad, bad command! Sit! Stay! Staaaay...
|
|
|
|
|
This is the one I am not able to reverse:
string temp = String.Format("{0:X02}{1:X02}{2:X02}", (output & 0xFF0000FF) >> 0, (output & 0xFF00FF00) >> 8, (output & 0xFFFF0000) >> 16);
Not good with these conversions.
|
|
|
|
|
What conversions?
All it does is extract the lowest three bytes and output them in little endian order a hex strings.
Now come on - be honest. You didn't write that, did you?
Bad command or file name. Bad, bad command! Sit! Stay! Staaaay...
|
|
|
|
|
I did... You can search google, for the code and there will not be a single hit for similar code.
This was even posted by me on the same forum, couple of days back as the answer. PLEASE DON'T help if you are trying not to and prove that we are lying for what we are saying.
|
|
|
|
|
I'm not trying to prove anything!
All I'm sayign is: how come you wrote that code and don't understand what it does?
Bad command or file name. Bad, bad command! Sit! Stay! Staaaay...
|
|
|
|
|
Okay... Sorry I got it in a bad way.
I did get the steps from a peer who had an idea. From that I read tons of articles and wrote step by step code. But, I didn't want to go through that process again, so was looking for a one line solution or may be optimize my approach for the already written code.
I can write C# but these conversions from hex to UUEncode and vice versa is not my cup of tea.
|
|
|
|
|
OK.
Look at the line you worte:
string temp = String.Format("{0:X02}{1:X02}{2:X02}", (output & 0xFF0000FF) >> 0, (output & 0xFF00FF00) >> 8, (output & 0xFFFF0000) >> 16);
Let's reformat that so it's more obvious whats happening:
string temp = String.Format("{0:X02}{1:X02}{2:X02}",
(output & 0xFF0000FF) >> 0,
(output & 0xFF00FF00) >> 8,
(output & 0xFFFF0000) >> 16);
The String.Format bit is trivial: output each of three values as two hex digits with leadign zeros if necessary.
The other three do the same thing, just they work on three different bytes of the input number. (Except if you pass though a negative number, it's all going to fail badly - that's the "FF" ate th left hand side adding in the top byte to all three vlaues)
The top one extracts the least significant byte: x & 0x00000FF
The middle one extracts the middle byte value x & 0x00FF00, then shifts if down eight bit places to move it to the least significant position.
The top one does teh same with the top value of teh three, moving it 16 bits down.
So if the output variable held 0x00FEDCBA:
The first part extracts 0xBA
The second extracts 0xDC
The third extracts 0xFE
Which is then converted to a string "BADCFE" - little endian format because the least significant byte is first.
So to reverse it, break the string into three parts with SubString, convert each part with int.Parse(part, NumberStyles.HexNumber) and use << to shift it back where it came from.
Simple enough?
Bad command or file name. Bad, bad command! Sit! Stay! Staaaay...
|
|
|
|
|
Yeah.. Thanks a lot for the explanation.
|
|
|
|
|
You're welcome!
Bad command or file name. Bad, bad command! Sit! Stay! Staaaay...
|
|
|
|
|
Hi All ,
Currently in our C#.net project, we are using MsE4.0 .It is working fine. In the interfaces (service contracts/operation Contracts) we have lot of "ref" keywords used. Now we would like to move to MsE5.0. It is not accepting "ref" keywords in interfaces(operation contracts)
Thus creating problems.
Could you please let me know if there are any good alternatives (third party tools) to MsE5.0 , that can handle/tackle the problems caused by having "ref" keywords in the interfaces(operation contracts) gracefully.
Appreciate your help.
Thanks,
Sudhakar
|
|
|
|
|
|
I want to create a traffic laws application by using winforms and c# but I don't know how to start !
Can you help me please
|
|
|
|
|
You will have to elaborate the idea further.
What will the application do? How will it work?
|
|
|
|
|
the application must contain tests and each test contains 30 questions and you must answer each question in a period of time after finished the test you get your score and the correction
|
|
|
|