我阅读了两个Stackoverflow
答案,这些答案建议将xsi:type
硬编码为Element
。但是,我不能将其应用于我的情况,因为它应该在第一个attribute
之后。
这是我的代码:
XmlNode paymentMethod = CreateEmptyNode(rootNode, "PaymentMethod");
XmlAttribute paymentmethodNamespace = CreateAttribute(paymentMethod, "xmlns:xsi", "http://www.w3.org/2001/XMLSchema-instance");
XmlAttribute paymentmethodType = CreateAttribute(paymentMethod, "xsi:type", "CreditTransferType");
public XmlNode CreateEmptyNode(XmlNode parentNode, string nodeName)
{
var node = parentNode.OwnerDocument.CreateElement(nodeName);
parentNode.AppendChild(node);
return node;
}
public XmlAttribute CreateAttribute(XmlNode parentNode, string attributeName, string attributeValue)
{
var attribute = parentNode.OwnerDocument.CreateAttribute(attributeName);
attribute.Value = attributeValue;
parentNode.Attributes.Append(attribute);
// parentNode.AppendChild(node);
return attribute;
}
这就是我得到的结果。它从类型中省略了xsi:
<PaymentMethod xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" type="CreditTransferType">
结果必须为:
<PaymentMethod xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="CreditTransferType">