В XML, каковы узлы с вопросительными знаками, и как их добавить на С#?

Вот пример файла XML, созданного в InfoPath:

  <?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>

Каковы те верхние 3 узла с вопросительным знаком, который называется... и как их создать на С#?

Пока у меня есть это:

  XmlDocument xmldoc;
  XmlDeclaration xmlDeclaration;

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

Это отлично подходит для верхнего объявления XML node, но как создать следующие два?

Заранее спасибо:)

Ответы

Ответ 2

Это называется инструкциями по обработке. Вы можете использовать класс XmlProcessingInstruction для взаимодействия с ними в XmlDocument.

Как и в большинстве элементов, определенных в XmlDocument, вы не можете создавать его напрямую; вы должны использовать соответствующий метод factory на XmlDocument (CreateProcessingInstruction в этом конкретном случае.)

Ответ 3

Спасибо, что объяснили, что это инструкции по обработке. Используя CreateProcessingInstruction, как предлагается, вот решение:

  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);