2010-07-26 16 views
14

Oto przykład z pliku XML utworzonego w programie InfoPath:W języku XML, jakie są węzły ze znakami zapytania, i jak dodać je w języku 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> 

Jakie są te 3 najlepsze węzły ze znakiem zapytania nazwie ... i jak mogę je tworzyć w C#?

Do tej pory mam to:

XmlDocument xmldoc; 
    XmlDeclaration xmlDeclaration; 

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

Działa to dobrze dla górnego węzła deklaracji XML, ale w jaki sposób tworzyć następne dwa?

Z góry dziękuję :)

Odpowiedz

8

Są to tak zwane instrukcje przetwarzania. Dodaj je, używając XmlDocument.CreateProcessingInstruction.

+3

Pamiętaj, że pierwszy nie jest instrukcją przetwarzania. Jest to deklaracja dokumentu XML. Skorzystaj z tego [CreateXmlDeclaration] (http://msdn.microsoft.com/en-us/library/system.xml.xmldocument.createxmldeclaration.aspx). – porges

7

Nazywa się to instrukcjami przetwarzania. Możesz użyć klasy XmlProcessingInstruction do interakcji z nimi w XmlDocument.

Tak jak w przypadku większości elementów zdefiniowanych w ramach XmlDocument, nie można bezpośrednio utworzyć instancji; musisz użyć odpowiedniej metody fabrycznej na XmlDocument (CreateProcessingInstruction w tym konkretnym przypadku).

+0

Proszę zauważyć, co Porges powiedział powyżej: "... pierwszy nie jest instrukcją przetwarzania.Jest to deklaracja dokumentu XML." " – user2757572

2

Dziękuję za wyjaśnienie, że są to instrukcje przetwarzania. Używając metody CreateProcessingInstruction zgodnie z sugestią, tutaj jest rozwiązanie:

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

Świetnie, ale powinieneś zaktualizować swoje pytanie zamiast odpowiadać na własne pytanie. –

+2

Niepoprawnie. Zachęcamy do odpowiedzi na własne pytania i oznaczenia ich jako rozwiązania. Edycja Qs prowadzi do zamieszania i często unieważnia poprzednie odpowiedzi. – RichieHH

Powiązane problemy