|
If you are using .NET Framework 1.1, it is XmlTextReader. If you are using .NET Framework 2.0, it is XmlReader. Anyway, you query differently with XmlTextReader/XmlReader since it uses a pull technique. However, you can get the same results but you have to do more coding. http://www.codeproject.com/useritems/XmlTextReader.asp[^]
|
|
|
|
|
George L. Jackson wrote: Your query won't work.
It worked when I ran it. Is that what you mean?
led mike
|
|
|
|
|
Here is another
XPath is pretty nice eh?
I always run these before I post them.
led mike
|
|
|
|
|
:-> My bad! Your code didn't seem correct to me. I am sorry.
|
|
|
|
|
George L. Jackson wrote: Your code didn't seem correct to me.
No sweat. It never seems right to me that's why I always run it.
led mike
|
|
|
|
|
Thanks Mike and George. I will try it out and revert back.
With warm regards,
Vinu
|
|
|
|
|
Thanks got it working.
|
|
|
|
|
Hi folks,
I bind textboxes to nodes of an XmlDocument and refer to these nodes via an xpath statement. Updating existing content is really easy this way.
My problems arise, when I try my xpath statement does not find the node in question and subsequentially I want to create it.
Say, my xpath is "/def:Version/def:Entry[lang('en')]/Title" and the second element <entry xml:lang="en"> does not exist. At first I thought, I'd split my path into pieces, ininerate it backwards, reach the first existing node and then recreate the requested structure. This could work with very easy queries, but something like "def:Entry[lang('en')]" already would require my program to "understand" that it needs to create a <entry xml:lang="en"> from the xPath lang() function.
I would end up writing a strange kind of xpath parser. And the idea isn't so good either, because I'd have to make my xpath super verbose, so that no elements (attributes!) are left out (and therefore could be created at need), which doubtlessly would decrease performance.
I stumbled across a xupdate implementation at
http://www.openvue.net/projects.php?menu=4
It's nunit testcases don't work 100% so I would have to invest some more time into this.
That's why I wanted to ask you guys, what do you think: Xupdate is the way to go for me, or do you have any other good ideas?
Thanks in advance,
Jan
|
|
|
|
|
I am confused on what you are attempting to do. I use a key to find nodes that need updating. If a key is not present, I find nodes via its parents or search for nodes that are missing certain child nodes or attributes. You may need to just determine if the structure of your XML document is right for what you are trying to do.
|
|
|
|
|
Imagine the following xml:
<foo>
<bar action="1"><element>xxx<element></bar>
<bar action="2"><element>yyy<element></bar>
<bar action="3"><element>zzz<element></bar>
</foo>
I query: /foo/bar[action='1']/element
I get "xxx" and I can update it. Good.
I query: /foo/bar[action='4']/element
Now, this node does not exist, so it should be created (and it's predecessor bar with the attribute action=4). foo exists, so nothing needs to be done for it.
Same aplies for /foo/bar[4]/element, just the attribute has to come from somewhere else (I can provide for this).
/foo/bar[5]/element should fail
This is not for a special xml file, but a generic solution, so it does not depend on any certain structure...
Does this make things a bit clearer?
-- modified at 16:53 Thursday 21st September, 2006
|
|
|
|
|
I cannot see your XML. Use "Ignore HTML tags in this message ...".
|
|
|
|
|
this should be better, now
|
|
|
|
|
I lose it right after "Now, this node does not exist, so it should be created". If you are trying to write generic code to act on any XML structure, you probably have to determine its schema beforehand.
|
|
|
|
|
Probably, looking up the schema is a good idea and I am not at all against it. The problem is, that mingling xpath with schema to create missing nodes via dom is something extremely complicated. I wouldn't even know where to start.
That's why I thought, that XUpdate would help me there, as it is an developed language for more or less this purpose. At least I am thinking it is. I just looked it up a few days ago and haven't found anything better since. But I have no idea, if XUpdate does not have any pitfalls I am not aware of, if the implementation, I found, is ok and most importantly, if there isn't some other, more straight forward way.
As for explaining my somewhat confusing (I admit) text:
I wrote a provider that allows me to update and delete nodes via xpath. That's something quite easy. Now I needed to insert nodes as well and as the xpath was something I already had in my classes, I tried to implement the insert as well via xpath. I failed at that and I am pretty sure that xpath just is not the right expression for the job.
Even though others at cp have tried something quite similar: http://www.codeproject.com/csharp/xpathstore.asp
So my examples have to be read with that bias: to use an xpath as an more or less equivalent to an sql insert statement.
I query: /foo/bar[action='4']/element
Now, this node does not exist, so it should be created (and it's predecessor bar with the attribute action=4). foo exists, so nothing needs to be done for it.
Same aplies for /foo/bar[4]/element, just the attribute has to come from somewhere else (I can provide for this).
/foo/bar[5]/element should fail (because there is no element bar[4] for it to be inserted after)
Thanks for sharing your thoughts!
Jan
|
|
|
|
|
How do i remove the last blank page?
I use page breaks in this one at the end of each page. So my last page is blank, always... How can i dump this page?
Thanks in advance
"Many of life's failures are people who did not realize how close they were to success when they gave up." Thomas A. Edison
|
|
|
|
|
Ummm this is the XML/XSL forum and your questions, as stated, do not appear to pertain to either one of them since neither have a "page".
Try this[^]
led mike
|
|
|
|
|
I'm converting my xml and xsl into pdf... SO since there is no pdf section i posted my question here....
I want to know if it is possible to remove the blank page, in my case the last page, from the resulting convertion from xml to pdf. Thank you in any case...
"Many of life's failures are people who did not realize how close they were to success when they gave up." Thomas A. Edison
|
|
|
|
|
NarutoFan#1 wrote: I'm converting my xml and xsl into pdf
Well I believe most people on Code Project are not psychic so unless you tell us "pdf" we don't know. So your question is a PDF question. How are you generating PDF from XML using XSL, are you using FO? I may know someone that I can ask if that is the case.
led mike
|
|
|
|
|
yes i'm using fop. i use page break after every tag called "TEST". This results in a blank page at the end since i have to close the "TEST" tag at the end. How do i remove this blank page if it is possible?
Thanks for your time...
"Many of life's failures are people who did not realize how close they were to success when they gave up." Thomas A. Edison
|
|
|
|
|
you should be able to do something like
<xsl:if test="not(position() = last())">
<!-- insert the page break FOP whatever -->
</xsl:if>
led mike
|
|
|
|
|
Thank you.
i'll try it now.
"Many of life's failures are people who did not realize how close they were to success when they gave up." Thomas A. Edison
|
|
|
|
|
Hi all,
How do you put a footer on each page sequence?
I have for each x amount of rows in a table a new page sequence, but what is the code snippet for inserting a footer...?
Thank you in advance...
"Many of life's failures are people who did not realize how close they were to success when they gave up." Thomas A. Edison
|
|
|
|
|
I'm pretty new to programming XML on .NET. I'm looking for best practices on constructing an XML document.
Do I have anything to gain by building an XML document with a StringBuilder and then converting it to an XmlDocument? Should I just create the document using the proper objects as I go along? Any other tips?
Thanks,
-- modified at 1:36 Wednesday 20th September, 2006
Edit: Upon further investigation, it looks like XmlTextWriter is what I'm after.
|
|
|
|
|
string PI= "type='text/xsl' href='Whatever.xsl'";
XmlTextWriter myXmlTextWriter = new XmlTextWriter("PATH.xml", null);
myXmlTextWriter.Formatting = Formatting.Indented;
myXmlTextWriter.WriteStartDocument();
myXmlTextWriter.WriteProcessingInstruction("xml-stylesheet", PI);
//Open tag.
myXmlTextWriter.WriteStartElement("TagName");
//Open Tag with Attribute.
myXmlTextWriter.WriteStartElement("TagName2",null);
myXmlTextWriter.WriteAttributeString("key", Convert.ToString(counter));
//StartTagAndEndTagWithValue
myXmlTextWriter.WriteElementString("TagName3","What You Want Between Tags");
//Close Tag. This One Closes the "TagName2".
myXmlTextWriter.WriteEndElement();
//Close Tag. This One Closes the "TagName".
myXmlTextWriter.WriteEndElement();
//Write the XML to file(Look at "PATH.xml" part at the top)and close the myXmlTextWriter
myXmlTextWriter.Flush();
myXmlTextWriter.Close();
Hope that it is of some help...
"Many of life's failures are people who did not realize how close they were to success when they gave up." Thomas A. Edison
|
|
|
|
|