2010-07-26 18 views
14

Ecco un esempio di un file XML creato in InfoPath:In XML, quali sono i nodi chiamati con punti interrogativi e come li aggiungo in C#?

<?xml version="1.0" encoding="UTF-8"?> 
    <?mso-infoPathSolution solutionVersion="1.0.0.1" productVersion="12.0.0" PIVersion="1.0.0.0" href="file:///C:\Metastorm\Sample%20Procedures\InfoPath%20samples\Template1.xsn" name="urn:schemas-microsoft-com:office:infopath:Template1:-myXSD-2010-07-21T14-21-13" ?> 
    <?mso-application progid="InfoPath.Document" versionProgid="InfoPath.Document.2"?> 
    <my:myFields xmlns:my="http://schemas.microsoft.com/office/infopath/2003/myXSD/2010-07-21T14:21:13" xml:lang="en-us"> 
    <my:field1>hello</my:field1> 
    <my:field2>world</my:field2> 
    </my:myFields> 

Quali sono quei primi 3 nodi con il punto interrogativo chiamato ... e come faccio a creare in C#?

Finora ho questo:

XmlDocument xmldoc; 
    XmlDeclaration xmlDeclaration; 

    xmldoc=new XmlDocument(); 
    xmlDeclaration = xmldoc.CreateNode(XmlNodeType.XmlDeclaration, "", "") as XmlDeclaration; 
    xmlDeclaration.Encoding = "UTF-8"; 
    xmldoc.AppendChild(xmlDeclaration); 

Questo funziona bene per il nodo top dichiarazione XML, ma come faccio a creare il prossimo due?

Grazie in anticipo :)

risposta

8

Queste sono chiamate istruzioni di elaborazione. Aggiungili usando XmlDocument.CreateProcessingInstruction.

+3

Si noti che il primo non è un'istruzione di elaborazione. È la dichiarazione del documento XML. Utilizzare [CreateXmlDeclaration] (http://msdn.microsoft.com/en-us/library/system.xml.xmldocument.createxmldeclaration.aspx) per questo. – porges

7

Queste sono chiamate istruzioni di elaborazione. È possibile utilizzare la classe XmlProcessingInstruction per interagire con loro in un XmlDocument.

Come per la maggior parte degli elementi definiti all'interno di XmlDocument, non è possibile creare un'istanza direttamente; è necessario utilizzare il metodo factory appropriato su XmlDocument (CreateProcessingInstruction in quel caso particolare.)

+0

Si prega di notare cosa ha detto in precedenza Porges: "... il primo non è un'istruzione di elaborazione, è la dichiarazione del documento XML ..." – user2757572

2

Grazie per aver spiegato che si tratta di istruzioni di elaborazione. Utilizzando CreateProcessingInstruction come suggerito, ecco la soluzione:

xmlPi = xmldoc.CreateProcessingInstruction("mso-infoPathSolution", "solutionVersion=\"1.0.0.1\" productVersion=\"12.0.0\" PIVersion=\"1.0.0.0\" href=\"file:///C:\\Metastorm\\Sample%20Procedures\\InfoPath%20samples\\Template1.xsn\" name=\"urn:schemas-microsoft-com:office:infopath:Template1:-myXSD-2010-07-21T14-21-13\""); 
    xmldoc.AppendChild(xmlPi); 
+0

ottimo, ma è necessario aggiornare la domanda anziché rispondere alla propria domanda. –

+2

Sbagliato. Siete incoraggiati a rispondere alla vostra Q e contrassegnarla come soluzione. La modifica delle Q porta a confusione e spesso invalida le risposte precedenti. – RichieHH

Problemi correlati