C# xml problem
C# xml problem
Εχω το εξής πρόβλημα:
Στο XmlDocument πάω να προσθέσω ένα XmlElement με την AppendChild.
Ενώ μου το προσθέτει κανονικά, μου βάζει και ένα XmlAttribute "xmlns" το οποίο δε μπορώ να βγάλω.
Εχει ασχοληθεί κανείς με το θέμα?
ΥΓ-> Ενώ τρέχω τα παραδείγματα της msdn βιβλιοθήκης, η AppendChild δεν εμφανίζει το "xmlns".
Pls help
Thanx in advance
Στο XmlDocument πάω να προσθέσω ένα XmlElement με την AppendChild.
Ενώ μου το προσθέτει κανονικά, μου βάζει και ένα XmlAttribute "xmlns" το οποίο δε μπορώ να βγάλω.
Εχει ασχοληθεί κανείς με το θέμα?
ΥΓ-> Ενώ τρέχω τα παραδείγματα της msdn βιβλιοθήκης, η AppendChild δεν εμφανίζει το "xmlns".
Pls help
Thanx in advance
- Skeftomilos
- bit level
- Posts: 43
- Joined: Fri Mar 04, 2005 8:08 am
- Location: Ν.Κόσμος
Δοκίμασα το εξής ...
... και πήρα το εξής ...
Code: Select all
Imports System.Xml
Imports System.IO
Module Module1
Sub Main()
Dim oDocument As XmlDocument
Dim oDeclaration As XmlNode
Dim oNode As XmlNode
Dim oWriter As TextWriter
oDocument = New XmlDocument()
oDeclaration = oDocument.CreateXmlDeclaration("1.0", Nothing, Nothing)
Call oDocument.AppendChild(oDeclaration)
oNode = oDocument.CreateElement("Customers")
oNode.InnerText = "Hello"
Call oDocument.AppendChild(oNode)
oWriter = New StringWriter()
Call oDocument.Save(oWriter)
MsgBox(oWriter.ToString())
End Sub
End Module
Το συγκεκριμένο παράδειγμα δεν εμφάνισε την παρενέργεια που αναφέρεις.<?xml version="1.0" encoding="utf-16"?>
<Customers>Hello</Customers>
The pure and simple truth is rarely pure and never simple. Ο μη νους δε σκέπτεται μη σκέψεις για το τίποτα.
Eυχαριστώ για την απάντηση
. Το παράδειγμα που αναφέρεις είναι σε vb.net οχι σε c#.
Αυτό που θέλω να κάνω είναι να διαβάσω ένα αρχείο τύπου xml και να εντοπίζω κάποια Elements και στη συνέχεια να τους προσθέτω παιδιά AppendChild. Λέω "τύπου" γιατί είναι xml που έχει γραφτεί για ένα άλλο πρόγραμμα που παίρνει ως είσοδο τέτοιου είδους αρχεία.
Εστω το αρχείο εισόδου:
Θέλω κάτω από το τελευταίο <Directory>
να προσθέσω ένα tag <price/>
Τελικά κάνει το εξής:
Εχετε καμμιά άλλη ιδέα?
Αυτό που θέλω να κάνω είναι να διαβάσω ένα αρχείο τύπου xml και να εντοπίζω κάποια Elements και στη συνέχεια να τους προσθέτω παιδιά AppendChild. Λέω "τύπου" γιατί είναι xml που έχει γραφτεί για ένα άλλο πρόγραμμα που παίρνει ως είσοδο τέτοιου είδους αρχεία.
Εστω το αρχείο εισόδου:
Code: Select all
<?xml version="1.0"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2003/01/wi">
<Product Id="7B267631-0F4B-40C8-8025-CFEA43F8C3A5">
<Package Id="85722C83-EA10-4C3B-AC2E-71DFCF196B58"/>
<Media Id="1" Cabinet="Data.cab" EmbedCab="yes"/>
<Directory Id="TARGETDIR" Name="SourceDir">
<Directory Id="ProgramFilesFolder" Name="PFiles">
<Directory Id="bin" Name="bin">
</Directory>
</Directory>
</Directory>
</Product>
</Wix>
να προσθέσω ένα tag <price/>
Code: Select all
XmlDocument docInit = new XmlDocument();
docInit.CreateXmlDeclaration("1.0", null, null);
docInit.Load("input.xml");
//.....βρίσκω το κατάλληλο tag και το λέω root.....
XmlElement elem = docInit.CreateElement("price");
root.AppendChild(elem);
Code: Select all
<Directory Id="bin" Name="bin">
<price xmlns="" />
</Directory>
Εχετε καμμιά άλλη ιδέα?
- Skeftomilos
- bit level
- Posts: 43
- Joined: Fri Mar 04, 2005 8:08 am
- Location: Ν.Κόσμος
Αντικατέστησε το ...
... με το ...
Code: Select all
XmlElement elem = docInit.CreateElement("price");
root.AppendChild(elem);
Code: Select all
root.InnerXml = "<price />";
XmlElement elem = root.FirstChild;
The pure and simple truth is rarely pure and never simple. Ο μη νους δε σκέπτεται μη σκέψεις για το τίποτα.
Αν και το έφτιαξα υπερφορτώνοντας μια άλλη μέθοδο, ευχαριστώ πολύ που μου απάντησες!
Και λέω για όσους τυχόν ενδιαφέρονται οτι όταν το Xm έχει xmlns μη-γνωστό τότε θεωρεί οτι πρέπει να ορίζεται σε κάθε tag. Αυτό που έκανα ήταν να βρώ το xmlns του root και να το προσθσέτω σε κάθε tag. Αν αυτά είναι τα ίδια, τότε δεν το βάζει στον κώδικα.

Και λέω για όσους τυχόν ενδιαφέρονται οτι όταν το Xm έχει xmlns μη-γνωστό τότε θεωρεί οτι πρέπει να ορίζεται σε κάθε tag. Αυτό που έκανα ήταν να βρώ το xmlns του root και να το προσθσέτω σε κάθε tag. Αν αυτά είναι τα ίδια, τότε δεν το βάζει στον κώδικα.

- Skeftomilos
- bit level
- Posts: 43
- Joined: Fri Mar 04, 2005 8:08 am
- Location: Ν.Κόσμος
Πολύ σωστό! Θα ορκιζόμουν ότι πρόκειται για bug του framework, αλλά φαίνεται ότι υπάρχει μέθοδος στην τρέλα τους. Η πρότασή μου ήταν βέβαια ένα quick & dirty hack και όχι μία λύση της προκοπής.


The pure and simple truth is rarely pure and never simple. Ο μη νους δε σκέπτεται μη σκέψεις για το τίποτα.