2010-07-26 9 views
14

He aquí un ejemplo de un archivo XML creado en InfoPath:En XML, ¿cómo se llaman los nodos con signos de interrogación y cómo los agrego en 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> 

¿Cuáles son los 3 primeros nodos con el signo de interrogación llamada ... y cómo los crean en C#?

Hasta ahora tengo esto:

XmlDocument xmldoc; 
    XmlDeclaration xmlDeclaration; 

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

Esto funciona muy bien para el nodo declaración XML superior, pero ¿Cómo se crean los dos siguientes?

Gracias de antemano :)

Respuesta

8

Se llaman instrucciones de procesamiento. Agregalos usando XmlDocument.CreateProcessingInstruction.

+3

Tenga en cuenta que la primera no es una instrucción de procesamiento. Es la declaración del documento XML. Utilice [CreateXmlDeclaration] (http://msdn.microsoft.com/en-us/library/system.xml.xmldocument.createxmldeclaration.aspx) para esto. – porges

7

Se llaman instrucciones de procesamiento. Puede usar la clase XmlProcessingInstruction para interactuar con ellos en un XmlDocument.

Como con la mayoría de los elementos definidos dentro de un XmlDocument, no puede crear una instancia directamente; debe usar el método de fábrica apropiado en XmlDocument (CreateProcessingInstruction en ese caso particular).

+0

Tenga en cuenta lo que dijo Porges arriba: "... la primera no es una instrucción de procesamiento. Es la declaración del documento XML ..." – user2757572

2

Gracias por explicar que estas son instrucciones de procesamiento. Usando CreateProcessingInstruction como se sugiere, aquí está la solución:

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

excelente, pero debe actualizar su pregunta en lugar de responder su propia pregunta. –

+2

incorrecto Se le recomienda que responda su propia Q y la marque como la solución. La edición de Qs genera confusión y, a menudo, invalida las respuestas anteriores. – RichieHH

Cuestiones relacionadas