Почему теряется ссылка на пространство имен при копировании узлов XML?

У меня есть XML-документ (форма InfoPath), который выглядит примерно так:

<my:ClientMaintenance xmlns:my="http://schemas.microsoft.com/office/infopath/2003/myXSD/2009-07-06T07:04:54">
    <my:Payments>
    </my:Payments>
    <my:Payment>
        <my:Amount></my:Amount>
        <!-- Several other nodes -->
    </my:Payment>
</my:ClientMaintenance>

Узел Payment используется в качестве шаблона для добавления новых платежей в узел Payments . . Поэтому всякий раз, когда в форме нажимается кнопка Добавить платеж , мне нужно:

  1. Сделать копию узла Платеж в памяти
  2. Обновить значения
  3. Добавить он является дочерним по отношению к узлу Payments

По какой-то причине в конце этого я больше не могу запрашивать какие-либо узлы в пространстве имен my ! Вот код:

public void btnAddPaymentClicked(object sender, ClickedEventArgs e)
{
    var navigator = e.Source.CreateNavigator();
    var blankPayment = GetBlankPaymentNode(navigator).CreateNavigator();
    // new XmlNamespaceManager(blankPayment.NameTable).HasNamespace("my") == false
    // WHY???
}

private XmlDocument GetBlankPaymentNode(XPathNavigator navigator)
{
    var blankPayment = navigator.SelectSingleNode(FullBlankPaymentXPath, NamespaceManager);
    var blankXml = new XmlDocument();
    blankXml.LoadXml(blankPayment.OuterXml);
    var schema = new XmlSchema();
    schema.Namespaces.Add("my", MyNamespaceUri);  // Set elsewhere and != null
    blankXml.Schemas.Add(schema);
    return blankXml;
}

Почему на пространство имен больше нельзя ссылаться?

1
задан Dimitre Novatchev 28 September 2010 в 03:51
поделиться