gpt4 book ai didi

c# - 如何在文档内的 XML 中添加一个命名空间和另一个带有前缀的命名空间

转载 作者:行者123 更新时间:2023-12-04 16:54:13 26 4
gpt4 key购买 nike

我的目标是创建一个 XML node有两个 attributes - 一个是namespace另一个是 prefixnamespace , 如下所示:

enter image description here

到目前为止,我已经尝试了 3 个选项:

选项 1 : 硬编码它,不起作用。

        XElement paymentmethodType = XElement.Parse("<PaymentMethod xmlns:xsi=\"w3.org/2001/XMLSchema-instance\" xsi:type=\"CreditTransferType\"/>");

我只得到这个:
 <PaymentMethod xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" type="CreditTransferType">

选项 2 :将我的结构与 XmlAttributes 和 XMlNodes 结合使用:
    XmlAttribute paymentmethodNamespace = CreateAttribute(paymentMethod, "xmlns:xsi", "http://w3.org/2001/XMLSchema-instance");
XmlAttribute paymentmethodType = CreateAttribute(paymentMethod, "xsi:type", "CreditTransferType");

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

我再次得到这个:
 <PaymentMethod xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" type="CreditTransferType">

选项 3 : XElement 和 XAttributes:
        XElement paymentMethod = new XElement("PaymentMethod",
new XAttribute(XNamespace.Xmlns + "xsi", "http://w3.org/2001/XMLSchema-instance"),
new XAttribute(XNamespace.Xmlns + "xsi:type", "CreditTransferType"));

但我收到了 Exception那个“:”不是一个有效的符号。这也是一个问题,因为我使用 XMlDocument它只适用于 XMlNodeXMlAttribute .它不适用于 XAttribute .

现在我有 400 多行代码,我只想设置这个命名空间,我已经完成了文档。有没有简单的方法来做到这一点?

最佳答案

我不知道Option 1Option 2但对于 Option 3 - 您需要做的是获取namespace首先,然后使用 namespace分配 type .因为该命名空间是 xmlns:xsi , 你指定它的类型它会自动匹配到 xsi:type .简而言之,这里是代码:

            XNamespace ns = XNamespace.Get("http://www.w3.org/2001/XMLSchema-instance");


new XElement("PaymentMethod",


new XAttribute(XNamespace.Xmlns + "xsi", "http://www.w3.org/2001/XMLSchema-instance"),

new XAttribute(ns + "type", "CreditTransferType"));

关于c# - 如何在文档内的 XML 中添加一个命名空间和另一个带有前缀的命名空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59135359/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com