У меня есть 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
.Поэтому, когда в форме нажимается кнопка Добавить платеж , мне необходимо:
- Взять копию узла
Payment
в памяти - Обновитьзначения
- Добавить его как дочерний узел
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;
}
Почему на пространство имен больше нельзя ссылаться?