Rather than this type of tag:
<File Type="Criteria">
</File>
How can I get this:
<File Type="Criteria" />
I only need the closing tag if there will be elements or children
inserted there.
Thanks,
Brett 16 1615
Brett Romero <ac*****@cygen.com> wrote: Rather than this type of tag:
<File Type="Criteria"> </File>
How can I get this:
<File Type="Criteria" />
I only need the closing tag if there will be elements or children inserted there.
Could you tell us a bit more about the context? Are you trying to read
the XML, write it, what?
--
Jon Skeet - <sk***@pobox.com> http://www.pobox.com/~skeet Blog: http://www.msmvps.com/jon.skeet
If replying to the group, please do not mail me too
What do you mean? Do you mean when you save the DOM? The two are
equivalent.
"Brett Romero" <ac*****@cygen.com> wrote in message
news:11*********************@z14g2000cwz.googlegro ups.com... Rather than this type of tag:
<File Type="Criteria"> </File>
How can I get this:
<File Type="Criteria" />
I only need the closing tag if there will be elements or children inserted there.
Thanks, Brett
In C#, when I create an element, it always throws in the closing tag,
which I don't want. The backslash in the opening tag is a shortcut,
which is what I want.
Brett
Brett Romero <ac*****@cygen.com> wrote: In C#, when I create an element, it always throws in the closing tag, which I don't want. The backslash in the opening tag is a shortcut, which is what I want.
Again, please say exactly what context this is in. How are you creating
the element? How are you then formatting the document?
--
Jon Skeet - <sk***@pobox.com> http://www.pobox.com/~skeet Blog: http://www.msmvps.com/jon.skeet
If replying to the group, please do not mail me too
As for context, I'm only creating an XMLDocument() type and filling it
with elements.
Brett
Once again Google Groups is eating my posts. Here's another try:
I create an XMLDocument() object. I give it the root node and add
elements. When I do xmldoc.Save(filename), the file will look like
this:
<?xml version="1.0"?>
<ROOT>
<Person PersonId="100">
</Person>
</ROOT>
Here's my code, which is in a class extending XMLDocument(). That's
why you see the reference to "this":
private XmlDocument xmldoc = new XmlDocument();
private string rootNodeName = "ROOT";
private XmlNode xmlnode;
private XmlElement xmlelem;
private XmlElement xmlelem2;
private XmlText xmltext;
//This is in a method
xmlnode=this.CreateNode(XmlNodeType.XmlDeclaration ,"","");
this.AppendChild(xmlnode);
//add the root element
xmlelem=this.CreateElement("",rootNodeName,"");
xmltext=this.CreateTextNode("");
xmlelem.AppendChild(xmltext);
this.AppendChild(xmlelem);
//This is in a method
//add another element (child of the root)
xmlelem2=this.CreateElement("","Person","");
XmlAttribute atrXML = xmldoc.CreateAttribute("PersonId");
atrXML.Value = "100";
xmlelem2.SetAttributeNode(atrXML);
xmlelem2.AppendChild(xmltext);
this.ChildNodes.Item(1).AppendChild(xmlelem2);
I'm passing variables to each of the methods but hard coded values for
simplicity.
Hope that helps and this post.
Thanks,
Brett
Brett Romero <ac*****@cygen.com> wrote:
<snip> //This is in a method //add another element (child of the root) xmlelem2=this.CreateElement("","Person",""); XmlAttribute atrXML = xmldoc.CreateAttribute("PersonId"); atrXML.Value = "100"; xmlelem2.SetAttributeNode(atrXML); xmlelem2.AppendChild(xmltext); this.ChildNodes.Item(1).AppendChild(xmlelem2);
The problem is that you're appending an empty text node. If you get rid
of xmlelem2.AppendChild(xmltext); then it works fine.
Here's a short but complete example program:
using System;
using System.Xml;
class Test
{
static void Main()
{
XmlDocument doc = new XmlDocument();
doc.AppendChild(doc.CreateNode
(XmlNodeType.XmlDeclaration,"",""));
XmlElement root = doc.CreateElement ("", "ROOT", "");
XmlText text = doc.CreateTextNode ("");
root.AppendChild(text);
doc.AppendChild(root);
XmlElement person = doc.CreateElement ("", "Person", "");
XmlAttribute attr = doc.CreateAttribute ("PersonId");
attr.Value = "100";
person.SetAttributeNode (attr);
// Uncomment this line to get the "broken" behaviour
// person.AppendChild(text);
root.AppendChild(person);
doc.Save(Console.Out);
}
}
--
Jon Skeet - <sk***@pobox.com> http://www.pobox.com/~skeet Blog: http://www.msmvps.com/jon.skeet
If replying to the group, please do not mail me too
Perfect!
How do I add a nested node? For example, if I want to get this
structure:
<ROOT>
<File Type="Criteria" />
<Search Type="Person" Name="My Search" />
<CriteriaCollection >
<Person FirstName="Brett" LastName="Rom" />
<Person FirstName="Jon" LastName="Do" />
</CriteriaCollection>
</ROOT>
Where CriteriaCollection contains another node(?) named Person.
Thanks,
Brett
Brett Romero <ac*****@cygen.com> wrote: Perfect!
How do I add a nested node? For example, if I want to get this structure:
<ROOT> <File Type="Criteria" /> <Search Type="Person" Name="My Search" /> <CriteriaCollection > <Person FirstName="Brett" LastName="Rom" /> <Person FirstName="Jon" LastName="Do" /> </CriteriaCollection> </ROOT>
Where CriteriaCollection contains another node(?) named Person.
Create the CriteriaCollection element and append that as a child of the
root element. Then create the Person element and append that as a child
of the CriteriaCollection element.
--
Jon Skeet - <sk***@pobox.com> http://www.pobox.com/~skeet Blog: http://www.msmvps.com/jon.skeet
If replying to the group, please do not mail me too
Do you have a code example of how that is done? I can't get the Person
node to go.
this.ChildNodes.Item(index).AppendChild(xmlelem2);
ROOT has been created. CriteriaCollection has also been created
successfully. Doesn't the index go from 0 on? When I added
CriteriaCollection, I used an index of 1. Shouldn't the next index be
2...for Person? When I try that, I get:
Object reference not set to an instance of object.
Thanks,
Brett
Brett Romero <ac*****@cygen.com> wrote: Do you have a code example of how that is done? I can't get the Person node to go.
this.ChildNodes.Item(index).AppendChild(xmlelem2);
ROOT has been created. CriteriaCollection has also been created successfully. Doesn't the index go from 0 on? When I added CriteriaCollection, I used an index of 1. Shouldn't the next index be 2...for Person? When I try that, I get:
Object reference not set to an instance of object.
You've *created* CriteriaCollection, but have you appended it yet?
Without seeing your code, it's hard to say...
--
Jon Skeet - <sk***@pobox.com> http://www.pobox.com/~skeet Blog: http://www.msmvps.com/jon.skeet
If replying to the group, please do not mail me too
Yes - of which I said an index value of 1 was used:
this.ChildNodes.Item(1).AppendChild(xmlelem2);
where xmlelem2 contains the CriteriaCollection node.
Thanks,
Brett
Jon, I see the problem. I was trying to create things off of the
Declaration node, which I'm guessing you can't do.
Here's the finished product:
<?xml version="1.0"?>
<ROOT>
<File Type="Criteria" />
<DataCollection>
<Person FirstName="brett" />
</DataCollection>
</ROOT>
I insert items into DataCollection by using:
this.ChildNodes.Item(1).ChildNodes.Item(2).AppendC hild(xmlelem);
However, I can't always be sure DataCollection will be at 2 in the tree
structure. Is there a way to reference it by name instead of index?
Also, <File Type="Criteria" /> is an "Element" of ROOT, not a node.
Yet it pushes DataCollection down to index 2. Shouldn't DataCollection
be the first index off of ROOT? After all, I am saying ChildNodes,
which really shouldn't include elements.
Thanks,
Brett
Brett Romero <ac*****@cygen.com> wrote: Jon, I see the problem. I was trying to create things off of the Declaration node, which I'm guessing you can't do.
<snip>
I insert items into DataCollection by using:
this.ChildNodes.Item(1).ChildNodes.Item(2).AppendC hild(xmlelem);
However, I can't always be sure DataCollection will be at 2 in the tree structure. Is there a way to reference it by name instead of index?
You could use an XPath expression - but wouldn't it be easier just to
keep a reference to the element you created?
Also, <File Type="Criteria" /> is an "Element" of ROOT, not a node.
Well, every element is a node. Look at the type hierarchy for
XmlElement...
Yet it pushes DataCollection down to index 2. Shouldn't DataCollection be the first index off of ROOT? After all, I am saying ChildNodes, which really shouldn't include elements.
Yes it should - see above.
--
Jon Skeet - <sk***@pobox.com> http://www.pobox.com/~skeet Blog: http://www.msmvps.com/jon.skeet
If replying to the group, please do not mail me too
Can you give a code example of what this means or how it can be used:
You could use an XPath expression - but wouldn't it be easier just to
keep a reference to the element you created?
Thanks,
Brett
Brett Romero <ac*****@cygen.com> wrote: Can you give a code example of what this means or how it can be used:
You could use an XPath expression - but wouldn't it be easier just to keep a reference to the element you created?
I mean that at *some* point you're creating the DataCollection element.
Save a reference to it in a variable (like you've currently got for
xmlelem and xmlelem2). Then you just need to call
dataCollectionElement.AppendChild(personElement);
--
Jon Skeet - <sk***@pobox.com> http://www.pobox.com/~skeet Blog: http://www.msmvps.com/jon.skeet
If replying to the group, please do not mail me too This thread has been closed and replies have been disabled. Please start a new discussion. Similar topics
by: William C. White |
last post by:
Does anyone know of a way to use PHP /w Authorize.net AIM without using
cURL? Our website is hosted on a shared drive and the webhost company
doesn't installed additional software (such as cURL)...
|
by: Albert Ahtenberg |
last post by:
Hello,
I don't know if it is only me but I was sure that header("Location:url")
redirects the browser instantly to URL, or at least stops the execution of
the code. But appearantely it continues...
|
by: James |
last post by:
Hi,
I have a form with 2 fields.
'A'
'B'
The user completes one of the fields and the form is submitted.
On the results page I want to run a query, but this will change
subject to which...
|
by: Ollivier Robert |
last post by:
Hello,
I'm trying to link PHP with Oracle 9.2.0/OCI8 with gcc 3.2.3 on a Solaris9
system. The link succeeds but everytime I try to run php, I get a SEGV from
inside the libcnltsh.so library.
...
|
by: Richard Galli |
last post by:
I want viewers to compare state laws on a single subject.
Imagine a three-column table with a drop-down box on the top. A viewer
selects a state from the list, and that state's text fills the...
|
by: Albert Ahtenberg |
last post by:
Hello,
I have two questions.
1. When the user presses the back button and returns to a form he filled
the form is reseted. How do I leave there the values he inserted?
2. When the...
|
by: inderjit S Gabrie |
last post by:
Hi all
Here is the scenerio ...is it possibly to do this...
i am getting valid course dates output on to a web which i have designed
....all is okay so far , look at the following web url
...
|
by: Jack |
last post by:
Hi All,
What is the PHP equivilent of Oracle bind variables in a SQL statement, e.g.
select x from y where z=:parameter
Which in asp/jsp would be followed by some statements to bind a value...
|
by: Sandwick |
last post by:
I am trying to change the size of a drawing so they are all 3x3.
the script below is what i was trying to use to cut it in half ... I
get errors.
I can display the normal picture but not the...
|
by: DolphinDB |
last post by:
Tired of spending countless mintues downsampling your data? Look no further!
In this article, you’ll learn how to efficiently downsample 6.48 billion high-frequency records to 61 million...
|
by: ryjfgjl |
last post by:
ExcelToDatabase: batch import excel into database automatically...
|
by: Vimpel783 |
last post by:
Hello!
Guys, I found this code on the Internet, but I need to modify it a little. It works well, the problem is this: Data is sent from only one cell, in this case B5, but it is necessary that data...
|
by: ArrayDB |
last post by:
The error message I've encountered is; ERROR:root:Error generating model response: exception: access violation writing 0x0000000000005140, which seems to be indicative of an access violation...
|
by: PapaRatzi |
last post by:
Hello,
I am teaching myself MS Access forms design and Visual Basic. I've created a table to capture a list of Top 30 singles and forms to capture new entries. The final step is a form (unbound)...
|
by: Defcon1945 |
last post by:
I'm trying to learn Python using Pycharm but import shutil doesn't work
|
by: Shællîpôpï 09 |
last post by:
If u are using a keypad phone, how do u turn on JavaScript, to access features like WhatsApp, Facebook, Instagram....
|
by: Faith0G |
last post by:
I am starting a new it consulting business and it's been a while since I setup a new website. Is wordpress still the best web based software for hosting a 5 page website? The webpages will be...
|
by: isladogs |
last post by:
The next Access Europe User Group meeting will be on Wednesday 3 Apr 2024 starting at 18:00 UK time (6PM UTC+1) and finishing by 19:30 (7.30PM).
In this session, we are pleased to welcome former...
| |