 |
|
 |
Hello,
I am making a small mfc application in VS 6.0. In that i want to read data from an XML file suppose attribute value...... I have downloaded your code.....but i don't know how to use it.....Please mention the method how i use your code in my application.....whether i have to include your files in my application solution folder? And also explain How i can use the other methods of classes.....
And it is also not loading the large XML file.
Gunjan
modified 2 Feb '12.
|
|
|
|
 |
|
 |
I am a student in an engineering school. I have a computer project to do which is to: enhance a mp4 video with annotations that are stored in an xml file (mp7).
by your program displays the entire contents of the XML file, for against me I want him m'affiche information stored in specific tags in the xml file.
The project idea is to design an interface to select two files: a. Mp4 and a. Mp7
It should then parse the mp7 looking for a specific tag, previously defined. Mp7 mp4 files and will be given. the
tag annotations to specify a timestamp and a location in the video data.
Then load the video interface. Mp4 in an area of the window, and below there is space to display text from the file previously parsed mp7 (specifically the file will contain an mp7 URL parser that we should go on Web to retrieve information to display).
at first I just want to display the annotations that I set all in my file before I go looking for the internet
I enjoyed your program and I really hope you to help me make my own I await your response
Thank you in advance.............
I m realy need your hel MR Darkoman
|
|
|
|
 |
|
 |
Hi
I was looking for a simple c/c++ library which could validate my xml files based on the dtd (datatype definition) file
I found one XMLEditor made in Visual Basic that does this, but it uses some ActiveX component to validate the file - I want to build in this functionality in my own C++ project.
I found your XML parser, but I do not see validation, do you plan on adding this validation to your project????
|
|
|
|
 |
|
 |
CXMLFile xmlFile;
xmlFile.LoadFromStream((unsigned char *)info, strlen(info));
CXMLElement* pXmlRoot = xmlFile.GetRoot();
CXMLElement* pXmlElement = pXmlRoot->GetFirstChild();
LPTSTR pName = NULL;
LPTSTR val = NULL;
while(1)
{
if(!pXmlElement)
break;
pName = pXmlElement->GetElementName();
if (pXmlElement->GetElementType() == XET_TAG)
{
//pXmlRoot = pXmlElement;
pXmlElement = pXmlElement->GetFirstChild();
}
else if (pXmlElement->GetElementType() == XET_ATTRIBUTE)
{
val = pXmlElement->GetValue();
pXmlElement = pXmlRoot->GetNextChild();
}
else if (pXmlElement->GetElementType() == XET_TEXT)
{
pXmlElement = pXmlRoot->GetNextChild();//why is pXmlElement ususlly NULL?
}
}
modified on Wednesday, May 18, 2011 3:31 AM
|
|
|
|
 |
|
 |
this is a useful class packed by MSXML.but I found ur the class is so easy that i can`t delete&modfy a node. Thanks for share! I will try my best to update it.
|
|
|
|
 |
|
 |
Maybe it is better to investigate tinyXML or the similar library instead writing the new one?
Respect to darkoman, but why are you trying to discover a new wheel?
|
|
|
|
 |
|
 |
Hello,
this is just an example of how something can be done.
You might ask then next: why all these articles on the Code Project when you have the standard solutions?
It is not always about to "discover the wheel" but to help yourself or the others.
Or, let me put it this way: have you ever wandered how something works?
How to build your own scripting language or custom button control?
You have standard solutions here but you somehow, you always decide to do some part of the work by yourself?
Why?
Because you learn by doing it and you practice your skills also.
Regards,
Darkoman
"Avaritia est radix omnium malorum..."
|
|
|
|
 |
|
 |
if xml looks like:
<bala x=" " />
Then the parser fails. If i expand it to:
<bala x=" ">babaroga</bala>
Then it succeeds. I tryed to fix it but i must say that your code is quite confusing,
using offsets instead of pointers is... ah never mind.
It is great as drop in code (although you could really handle attributes with separate
functions, this "child/type" story is a bit annoying) but from coding perspective i would rather
use something else then try to fix your code. To be fair i am giving you 3.
Srdacne pozdrave iz Slovenije...
|
|
|
|
 |
|
 |
Hvala,
najlepse na analizi i predlozima za poboljsanje.
U planu mi je da izbacim novu klasu (i prateci clanak naravno) za rad sa HTML/XML dokumentima koja je nedavno zavrsena.
Nadam se da ce ona biti od vece koristi C++ programerima nego ova koja (objektivno) ima puno nedostataka.
Pozdrav,
Darkoman
"Avaritia est radix omnium malorum..."
|
|
|
|
 |
|
|
 |
|
 |
Hi,
I can't load this xml file:
Big Test
Small Test
when I'm changing the inner to it works fine.
Does it support nested elements with the same name?
Thanks,
Yuval
|
|
|
|
 |
|
 |
I ran into a couple problems during LoadFromFile in .NET 2003.
1. dwAttributeOffset was not initialized before use in ParseXMLElement(). I initialized it to zero at definition with no obvious problems.
2. Corrupted the stack. I haven't tracked this down yet. It was detected by the debug runtime at ParseXMLElement() exit.
In fairness, the XML file I tried was large and maybe not quite the model in mind during the code design. Nothing fancy in the XML. All simple tags (e.g., aaaaa) other than the first line.
Larry
|
|
|
|
 |
|
 |
Hello,
can you please submit the XML file you have tried to parse, or just a part of it?
Thank you.
Best regards,
Darkoman"Avaritia est radix omnium malorum..."
|
|
|
|
 |
|
 |
I'll try to get a piece of the file that will still produce the problems. The file is currently about 15MB (I did say large).
Larry
|
|
|
|
 |
|
 |
If you have iTunes (or know someone locally that has it) you may be able to create a similar XML file. On iTunes File=>Export->Library will produce an XML file with data about the items in the library (title, artist, composer, etc) and playlists. I tried another small XML parser and it didn't like the <!DOCTYPE line. I got the same failure with and without the DOCTYPE line with this implementation.
I will still try to get a smaller file that still has the problems.
Larry
|
|
|
|
 |
|
 |
1. there was no indentation
2. I needed to create the root by myself. didn't get it automatically. did I miss something?
3. the root was not written to file, (so internet explorer could not show it)
4. if I open it as a text file, there is no indentation
|
|
|
|
 |
|
|
 |
|
 |
Hello, Darko
I debugged your code and found myself repeating on loops every inner tag.
I did not try to rewrite yet, but I wonder if you missed the performance issue and it can be done on better performance or I am the one who misses something.
thanks
|
|
|
|
 |
|
 |
Hello,
thanks for the interest in this work.
Yes, you are right, I am using recursion to parse the XML file, although it could be done using just plain stack.
Using the stack would for sure increase the overall performance of this XML parser.
I will try to find the time to implement this second solution you have suggested.
Best regards,
Darkoman
"Avaritia est radix omnium malorum..."
|
|
|
|
 |
|
 |
It would be nice, if the authors assume ansi-c++ standard to produce articles like this. In fact, then "the rest of us" will also be able to use it. I do not hate MS Windows and its' product, it is just the matter of taste. But, as you see, a brilliant author, Mr darkoman, who has written this beautiful article, very nice article, but you know, it is useless for "the rest of the us" who do not use CString and DWORD and many more macros like these.
Rajesh Karan
|
|
|
|
 |
|
 |
Hello,
thanks for the interest in this article.
The main goal in this article was not to produce an "ansi-c++ standard XML file parser", but to help certain number of developers working with MS Visual Studio. This might be, however, a mistake not to take care about other developers not using this tool.
But, this is also a "pilot-article". If it lives long enough to see the future versions, the final one would for sure be a non-MFC dependent one.
That was my goal many times, writing other articles for the CodeProject.
I thank you for the positive criticism...
Best regards,
Darkoman
"Avaritia est radix omnium malorum..."
|
|
|
|
 |
|
 |
Hello friend ,
I used your class in my code. it is simple and easy to understand.
by using ur class, i added some nodes..
But now i have a problem...
1. how can i delete a node
2. how can i modify the content of a node..
for eg.
<main>
<add1>
<new1>10</new1>
<new1>50</new1>
</add1>
</main>
How to edit content tag like 10 to 20.
How to delete node tag.
|
|
|
|
 |
|
 |
It looks like the parser can not work through reserved characters in the data of an element. Notice that the "=" at the end of the GUID will cause the parser to terminate the data collection and enter the Attribute collection.
<objects xmlns="http://yahoo.com/objects">
kzpccGRdnX7t71ROn4PG0Q==
</objects>
|
|
|
|
 |
|
|
 |
|
 |
Hi, i am very interesting on this XML parser class.. currently i am doing my school project and i try to use this parser to parse my XML file.
But it fail.. My XML file able to open in IE browser so means the format should be correct. Izit there is any congfiguration i need to change?
XML file content:
<?xml version="1.0" encoding="UTF-8"?>
<skin>
<manifest name="SONcommunicator Gray" author="CaryCui" description="System defulat skin " version="1.0" type="Skin" />
<fonts>
<font name="Panel.Caption" face="Tohoma" size="12" weight="plain"/>
</fonts>
<colourScheme>
<colour name="System.Base.Window" value="FFFFFF"/>
<colour name="System.Base.Midtone" value="FFFFFF"/>
<colour name="System.Back.Selected" value="B9CFFF"/>
<colour name="System.Back.Checked.Selected" value="FFFFFF"/>
<colour name="System.Margin" value="FFFFFF"/>
<colour name="Panel.Caption.Text" value="000000"/>
<colour name="Panel.Caption.Back" value="000000"/>
<colour name="TaskPanel.Back" value="EEEEEE"/>
<colour name="System.Shadow" value="D6D4D7"/> <!-- menu icon mouseover hovers -->
<colour name="System.Border" value="7C7E7C"/> <!-- menu hover border colour -->
<colour name="System.Disabled" value="7C7E7C"/> <!-- item inactive/disabled colour -->
<colour name="System.Text" value="000000"/> <!-- active menu / item text colour -->
<colour name="MainDialog.Backgroud" value="FFFFFF"/>
<colour name="Dialog.Background" value="FFFFFF"/>
<colour name="MainHeader.Board" value="6A9FE1" />
<colour name="MainHeader.BodyStart" value="C2DAFC" />
<colour name="MainHeader.BodyEnd" value="E9F0FF" />
<colour name="MainHeader.BodyShadow" value="C2DAFC" />
<colour name="MainHeader.BodyGrid" value="E9F0FF" />
<colour name="MainTab.Board" value="E2E2DA" />
<colour name="MainTab.BodyFill" value="FFFFFF" />
<colour name="MainTab.BodyShadow" value="ECEBE6" />
<colour name="MainTab.ItemBoard" value="C8C6B7" />
<colour name="MainTab.ItemFill" value="E8E8E0" />
<colour name="FolderBarCtrl.BodyStart" value="C4DBFC" />
<colour name="FolderBarCtrl.BodyEnd" value="E9F0FF" />
</colourScheme>
<watermarks>
<watermark target="MainMenuBarBK" path="DialogToolBarBK.bmp"/>
<watermark target="DialogToolBarBK" path="DialogToolBarBK.bmp"/>
<watermark target="MainDialogBK" path="MainDialogBK.bmp"/>
</watermarks>
<WindowSkins>
<WindowSkin>
<image path="SONmobileGUI.bmp"/>
<image path="DialogBK.bmp" type="watermark"/>
<target window="MainDialog"/>
<target window="ChatDialog"/>
<parts>
<part name="TopLeft" rect="0,0,26,26"/>
<part name="Top" rect="30,0,60,26"/>
<part name="TopRight" rect="212,0,70,26"/>
<part name="Left" rect="0,26,2,530"/>
<part name="Right" rect="280,26,2,530"/>
<part name="BottomLeft" rect="0,561,10,3"/>
<part name="Bottom" rect="10,561,60,3"/>
<part name="BottomRight" rect="272,561,10,3"/>
<part name="MinimiseDown" rect="224,5,16,16"/>
<part name="MinimiseHover" rect="224,223,16,16"/>
<part name="MaximiseDown" rect="241,5,16,16"/>
<part name="MaximiseHover" rect="241,223,16,16"/>
<part name="CloseDown" rect="259,8,16,16"/>
<part name="CloseHover" rect="259,226,16,16"/>
</parts>
<anchors>
<anchor name="Icon" rect="8,6,16,16"/>
<anchor name="Close" rect="-23,8,16,16"/>
<anchor name="Maximise" rect="-41,5,16,16"/>
<anchor name="Minimise" rect="-58,5,16,16"/>
</anchors>
<region>
<shape type="rectangle" rect="0,5,-1,-1"/>
<shape type="roundRect" rect="0,0,-1,-1" size="5,5" combine="or"/>
<shape type="roundRect" rect="0,0,-1,-1" size="5,5" combine="and"/>
</region>
<caption rect="28,5,400,16" fontFace="Tahoma" fontSize="11" colour="FFFFFF" inactiveColour="CCCCFF" outlineColour="000080"/>
</WindowSkin>
<WindowSkin>
<image path="SONmobileGUI.bmp"/>
<image path="DialogBK.bmp" type="watermark"/>
<target window="PopDialog"/>
<target window="Dialog"/>
<parts>
<part name="TopLeft" rect="0,0,26,26"/>
<part name="Top" rect="30,0,60,26"/>
<part name="TopRight" rect="254,247,24,26"/>
<part name="Left" rect="0,26,2,530"/>
<part name="Right" rect="280,26,2,530"/>
<part name="BottomLeft" rect="0,561,10,3"/>
<part name="Bottom" rect="10,561,60,3"/>
<part name="BottomRight" rect="272,561,10,3"/>
<part name="CloseDown" rect="259,8,16,16"/>
<part name="CloseHover" rect="259,226,16,16"/>
</parts>
<anchors>
<anchor name="Icon" rect="8,6,16,16"/>
<anchor name="Close" rect="-23,8,16,16"/>
</anchors>
<region>
<shape type="rectangle" rect="0,5,-1,-1"/>
<shape type="roundRect" rect="0,0,-1,-1" size="5,5" combine="or"/>
<shape type="roundRect" rect="0,0,-1,-1" size="5,5" combine="and"/>
</region>
<caption rect="28,5,400,16" fontFace="Tahoma" fontSize="11" colour="FFFFFF" inactiveColour="CCCCFF" outlineColour="000080"/>
</WindowSkin>
<WindowSkin>
<image path="SONmobileGUI.bmp"/>
<image path="DialogBKMakeCall.bmp" type="watermark"/>
<target window="PopDialogMakeCall"/>
<parts>
<part name="TopLeft" rect="0,0,26,26"/>
<part name="Top" rect="30,0,60,26"/>
<part name="TopRight" rect="254,247,24,26"/>
<part name="Left" rect="0,26,2,530"/>
<part name="Right" rect="280,26,2,530"/>
<part name="BottomLeft" rect="0,561,10,3"/>
<part name="Bottom" rect="10,561,60,3"/>
<part name="BottomRight" rect="272,561,10,3"/>
<part name="CloseDown" rect="259,8,16,16"/>
<part name="CloseHover" rect="259,226,16,16"/>
</parts>
<anchors>
<anchor name="Icon" rect="8,6,16,16"/>
<anchor name="Close" rect="-23,8,16,16"/>
</anchors>
<region>
<shape type="rectangle" rect="0,5,-1,-1"/>
<shape type="roundRect" rect="0,0,-1,-1" size="5,5" combine="or"/>
<shape type="roundRect" rect="0,0,-1,-1" size="5,5" combine="and"/>
</region>
<caption rect="28,5,400,16" fontFace="Tahoma" fontSize="11" colour="FFFFFF" inactiveColour="CCCCFF" outlineColour="000080"/>
</WindowSkin>
<WindowSkin>
<image path="SONmobileGUI.bmp"/>
<target window="MsgBox"/>
<parts>
<part name="TopLeft" rect="0,0,26,26"/>
<part name="Top" rect="30,0,60,26"/>
<part name="TopRight" rect="254,247,24,26"/>
<part name="Left" rect="0,26,2,530"/>
<part name="Right" rect="280,26,2,530"/>
<part name="BottomLeft" rect="0,561,10,3"/>
<part name="Bottom" rect="10,561,60,3"/>
<part name="BottomRight" rect="272,561,10,3"/>
<part name="CloseDown" rect="259,8,16,16"/>
<part name="CloseHover" rect="259,226,16,16"/>
</parts>
<anchors>
<anchor name="Icon" rect="8,6,16,16"/>
</anchors>
<region>
<shape type="rectangle" rect="0,5,-1,-1"/>
<shape type="roundRect" rect="0,0,-1,-1" size="5,5" combine="or"/>
<shape type="roundRect" rect="0,0,-1,-1" size="5,5" combine="and"/>
</region>
<caption rect="28,5,400,16" fontFace="Tahoma" fontSize="11" colour="FFFFFF" inactiveColour="CCCCFF" outlineColour="000080"/>
</WindowSkin>
</WindowSkins>
</skin>
|
|
|
|
 |
|