|
Its seems the XML contents I posted previously has not come.
Here I am posting it as a comment
Regards,
Ajith
|
|
|
|
|
Hi all,
I have the following sample XML file
<root>
<string id="%s\" hello\'s="" world\""="">
<locale>Locale Equivalent of above id string
I load the xml document document using the XmDocument.Load( fileName) in C#.
Sample code
string idvalue = "%s\"Hello\'s World\"";
string path = "/ROOT?STRING[@id = \"" + idvalue + "\"]/LOCALE"; // so as to get the text between LOCALE tag
XmlDocument doc = new XmlDocument();
doc.Load(fileName);
string str = doc.DocumentElement.SelectSingleNode(path).InnerXml;
Howvever the the statement throws an exception because the quotes in the path string is not escaped in XML. SelectSingleNode() takes an XPATH expression. How to escape the quotes in an XPATH expression so that the last statement works correctly.
The last expression is a problem only when their is a " in id attribute, since the attribute value is enclosed in quotes in Xpath. for id attribute values with no quotes takes me correctly to the text betwen LOCALE tag
The XML is successfully validated internally aginst a DTD.
The XML file contains ", ', &, <, > in their encoded form.
Any solutions to offer
Regards,
Ajith
|
|
|
|
|
I got a xml file, sth. like this:
- <rptindex>
<title>AppAnalyzer
<description>This report displays entries in the task log. Each entry in the report represents the end of a report task.
<subject>
<author>NetIQ
<category>Servers
<component>Servers
<company>
<document>default.htm
<datasource>localhost\AppAnEx_current
<createddate>4/2/2003 4:50:25 PM
<hasdata>True
<expires>60
Now, I want to modify this file and take out the first line " " and save it back to this file. What's the easiest way to do this (a dos command or I have to write a tool)?
|
|
|
|
|
Hello,
I have an XmlNodeList with attributes and and text values. I am looking for a way to create a function that can return a value from reading a nodelist by specifiying the attribute name. For example, string a = FieldByName("acct") would result in 12345 being returned.
<fields>
<field name="acct">12345</field>
<field name="company">ACME Inc</field>
<field name="city">Dallas</field>
<field name="state">TX</field>
</fields>
Any help would be greatly appreciated.
Thank you.
|
|
|
|
|
After having read up on XSD I've come to the conclusion that it should be possible to "compilers" for XML documents. With compiling I mean reading the XML input and turn it into raw & ready to use data.
To clarify what I mean:
<people>
<person>
<name>Jörgen</name>
<age>27</age>
</person>
<person>
<name>Mr Who</name>
<age>123</age>
</person>
</people> This particular document should be representable using a C++ structure like this:
struct person {
std::string name;
int age;
};
typedef std::list<person> people; This can all be done using various techniques such as DOM or SAX, and some hand written code.
However, writing stuff like this for large and complex XML documents is a tedious task, and possibly quite error prone. Processing DOM trees is a simple, but lazy way to deal with it. DOM trees are bloated and contains a lot of information which is basically redundant information for the application.
I am sure it is possible to write a parser generator which
- reads XSD definitions
- generates C++ structures based on XSD information
- generates a SAX based parser/compiler which instantiates the C++ structures and populates them with data from the XML document
I'm guessing such code would be quite non-bloated and fast (at least compared to DOM). Does anybody know if this has been done?
--
Tune your mind, reach inside, peel away
Touch, Taste, Feel, Saturation
|
|
|
|
|
Just some comments.
I am not sure if exactly what you ask for has been implemented but code to create XSD from XML files and build entry forms exist so the basics are there. Now I have a question. You still need to know the structure to program against so maybe I am just missing some clever implementation but you still have to create code to work with that specific structure correct? and since it has all of the information it is not drastically different than the DOM model. Given this is true code like Kristen Wegner's PUGXML[^] is not that much different from what I hear you asking for. Yes you still step down through the DOM tree but you would in your classes also. You are trading the C++ class overhead for the overhead of the XML file in memory. IMhO gaining familiarity with a DOM or SAX implementation would be more profitable than having to relearn each custom generated class. Am I missing your intent?
""
|
|
|
|
|
Michael A. Barnhart wrote:
You still need to know the structure to program against
Yes, this is correct. But if you do have a schema for the data, that is not really a problem is it? The schema is a beautiful thing: it has structure and it has types - all of them transferable into C++.
Michael A. Barnhart wrote:
and since it has all of the information it is not drastically different than the DOM model.
The DOM model must maintain a lot of unnecessary information which I am not interested in. At least if you take into account that I already know structure and datattypes. If I take a look at IXMLDOMNode in MSXML 4 for instance, I find that most of its properties are totally unneccesary if I already know the structure and type information of the data to begin with! Names for instance, are maintained by the compiler (names of struct s and members), "other node references" such as first, last, parent, are not interesting - I already know the structure. Not to mention the underlying XML text code!
I guess what I want to do is pretty much what template programmers want to do: bind as much information as possible at compile time rather than runtime.
Michael A. Barnhart wrote:
You are trading the C++ class overhead for the overhead of the XML file in memory.
Well, compared to a DOM document, I am sure I'd have huge advantages. I'd have a "distilled" collection of data, while the DOM tree would have a very verbose collection of data + a text copy of the entire XML document file in memory.
Michael A. Barnhart wrote:
IMhO gaining familiarity with a DOM or SAX implementation would be more profitable than having to relearn each custom generated class. Am I missing your intent?
I'm basically saying that DOM and SAX are crude interfaces for dealing with entire documents if you don't want to do fancy operations such as transformations. If you are only interested in the data, then C++ structures and STL datatypes and structures would give you a very nice interface - it would model the data 1:1 basically.
A DOM interface models a general tree, which is also untyped. Sure, you've had the DOM tree validated against a XSD, but you'll still have to do conversions etc.
In essence, I just want a faster and more static version of DOM.
--
Tune your mind, reach inside, peel away
Touch, Taste, Feel, Saturation
|
|
|
|
|
Jörgen Sigvardsson wrote:
In essence, I just want a faster and more static version of DOM.
OK, and I see the benefit of doing this if it is something you run all of the time. Much of what I have to work with is not as stable as one would like. So flexibility is my biggest driver. I do not see the typical developer doing this a lot of the time. You would create a class and struct for the needed data and have a XML import export functions in it that would be SAX event driven if anything but small files are handled. So you save a few hours when adding a new data structure. How often do you expect to add new data structures? Yes if one person takes the weeks to built it, many can benefit. To truly cover all of the schema variations could be a bit taxing on someone.
""
|
|
|
|
|
If you mean something like xsd.exe[^] that comes with Visual Studio.NET, or JAXB[^], you're out of luck currently as far as free tools go (of course, xsd.exe isn't free, but you may well have VS.NET anyway...). However, xsd does say that it'll support anything that implements System.CodeDom.Compiler.CodeDomProvider, which C++ may do when Visual Studio 2003 arrives. Of course, it would still only be Managed C++....
Other alternatives (all for Java ) are Castor[^], Jaxme[^] and Jibx[^]
Of course, if you've got money to spend, there are C++ options like xmlspy[^] and RogueWave's XML Object Link[^]
Stuart Dootson
'Java, Basic, who cares - it's all a bunch of tree-hugging hippy cr*p'
|
|
|
|
|
Thank you very much for this information! I was beginning to sketch a little on an implementation very much like RogueWaves XML Object Link.
I think I will look into this CodeDom-stuff. Maybe I could write my own classes to generate "pure" C++. Looks like I can forget that.
--
Tune your mind, reach inside, peel away
Touch, Taste, Feel, Saturation
|
|
|
|
|
XML Data Binding tools provide this, but you need to describe your xml in a schema (xsd/xdr/dtd).
http://www.rpbourret.com/xml/XMLDataBinding.htm lists available tools.
I use the wizard from Liquid Technologies:
http://www.liquid-technologies.com/Products/LXDBWizard.htm
|
|
|
|
|
I want to be able to concatenate several XML files together, and I can't find anything on W3C.org that says xml has an "include" tag. Does it? Am I blind? Or am I screwed?
Conversely, the reason I need this is because the stupid XmlDataDocument.Load method can't be called more than once. It requires a blank document, and there is no Append or similar function.
Marc
Help! I'm an AI running around in someone's f*cked up universe simulator. Sensitivity and ethnic diversity means celebrating difference, not hiding from it. - Christian Graus Every line of code is a liability - Taka Muraoka Microsoft deliberately adds arbitrary layers of complexity to make it difficult to deliver Windows features on non-Windows platforms--Microsoft's "Halloween files"
|
|
|
|
|
No you are not blind. There was an include processor command but it was rather unsecure do a google on "Xml eXternal Entity" and was removed if my memory is working tonight.
Take a look at XInclude (candidate recomendations) and XLink (recomendation)
XInclude[^]
XLink[^]
""
|
|
|
|
|
Have a look at the ImportNode and AppendChild methods. Something like this should work:
XmlDataDocument doc1 = LoadDoc1();
XmlDataDocument doc2 = LoadDoc2();
foreach(XmlNode source in doc2.DocumentElement.ChildNodes)
doc1.DocumentElement.AppendChild(doc1.ImportNode(source, true));
"These people looked deep within my soul and assigned me a number based on the order in which I joined." - Homer
|
|
|
|
|
Hi,
I have many entries in my XML and I would like to search for one in particular (the one the user wants) but not show it, just take that entry and check an element in it, how would this be done.
Ex:
<?xml version="1.0" encoding="UTF-8"?>
<Airports>
<Airport>
<ICAO>KABE</ICAO>
<Name>Allentown Intl PA</Name>
<Lat>40.652364</Lat>
<Long>-75.440403</Long>
</Airport>
<Airport>
<ICAO>KABI</ICAO>
<Name>Abilene Reg. TX</Name>
<Lat>32.411319</Lat>
<Long>-99.681897</Long>
</Airport>
I want to look up KABE and put its Long value in a double. (BTW, I have no schema for this file, only the XML, would a schema be helpfull here?)
Thanks...
// JS Paquet
cout << "Thank you all" << endl;
|
|
|
|
|
Try something like:
XmlNode node = doc.SelectSingleNode("/Airports/Airport[ICAO='KABE']/Long");
double lon = double.Parse(node.InnerText);
"These people looked deep within my soul and assigned me a number based on the order in which I joined." - Homer
|
|
|
|
|
Hello,
I have one element named LoadConfig. It has one attribute named 'Type'. The attribute 'Type' can have two values('PreDefined' or 'UserDefined'). If attribute value is 'PreDefined', LoadConfig element can have 3 child elements. If attribute value is 'UserDefined' LoadConfig element can have any type xml nodes as its childnodes. Can anybody explain how to make schema for this.
Thanks,
Chito
|
|
|
|
|
I think you would be better off having two elements (LoadConfigDef, LoadConfigUser) with the parent having a selection of which one.
""
|
|
|
|
|
I don't know XML and I mean it. :p
I need code in VC++ that can make an XML file out of a byte array.
Can somebody help with that?
|
|
|
|
|
With out some description of your goals and what the structure of the data is in the array, any suggestions would be rather open. Have you looked through any tutorials? Like the ones I mention below.
""
|
|
|
|
|
I need a code snippet in VC++ that can read an ascii (or Base64 encoded) file and generate an XML file. thanks for your 'help'.
|
|
|
|
|
Well do you just need to read in a string and then save it as a CData section to a single element? I would expect you wanted to organize the data in some hierarchical scheme.
Have you just browsed the XML code here in CP and looked for examples?
Kristen Wegner's is good work (along with many others) http://www.codeproject.com/soap/pugxml.asp[^]
There are several "SET" methods to add elements, attributes and their values.
""
|
|
|
|
|
Hi,
I have a xml file (e.g. mydata.xml). How am I able to make use of javascript to select elements to be displayed on a HTML?
E.g. Using dropdown menu, I select 'Name'. Onclick the Submit button will enable the javascript to pull out all the 'Name' elements in mydata.xml and display on IE. Is this possible?
Also, possible to have logical 'AND' function?
Thanks in advance.
|
|
|
|
|
Just FYI,
Roger Costello has updated his excellent tutorials and white papers. Feb 2003
xfront[^]
""
|
|
|
|
|
How do i append data to an existing XML file using C#? I have two processes that need to populate the same XML file.
|
|
|
|