gpt4 book ai didi

c# - 生成命名空间的 XML

转载 作者:数据小太阳 更新时间:2023-10-29 02:46:03 25 4
gpt4 key购买 nike

我正在尝试向 ClaimTypesOffered 元素添加更多声明,如下所示:

<fed:ClaimTypesOffered>
<auth:ClaimType Uri="http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name" Optional="true" xmlns:auth="http://docs.oasis-open.org/wsfed/authorization/200706">
<auth:DisplayName>Name</auth:DisplayName>
<auth:Description>The name of the subject.</auth:Description>
</auth:ClaimType>
</fed:ClaimTypesOffered>

那里有很多命名空间魔术,我正在努力解决它。只是获得正确的元素名称一直很困难。我已经尝试了以下所有方法:

new XElement(XNamespace.Get("auth") + "ClaimType", "somedata");

给予

<ClaimType xmlns="auth">somedata</ClaimType>

new XElement(XName.Get("{http://docs.oasis-open.org/wsfed/authorization/200706}auth"), "somedata");

给予

<auth xmlns="http://docs.oasis-open.org/wsfed/authorization/200706">somedata</auth>

new XElement("auth:ClaimType", "somedata");

给予

System.Xml.XmlException : The ':' character, hexadecimal value 0x3A, cannot be included in a name.

我正在寻求进一步的帮助,生成包含属性和内部元素的声明的完整示例将非常棒,即使是在正确方向上的小插入也会受到赞赏。

最佳答案

关键是在父元素上定义命名空间,然后子元素可以使用该命名空间。如果没有 new XAttribute(XNamespace.Xmlns + "auth", auth.NamespaceName),命名空间将以其他方式定义,如原始问题中所示。

        XNamespace fed = "http://docs.oasis-open.org/wsfed/federation/200706";
XNamespace auth = "http://docs.oasis-open.org/wsfed/authorization/200706";

XElement root = new XElement(auth + "ClaimType",
new XAttribute(XNamespace.Xmlns + "auth", auth.NamespaceName),
new XAttribute("Uri", "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name"),
new XAttribute("Optional", "true"),
new XElement(auth+"DisplayName", "EmployeeID"),
new XElement(auth+"Description", "The employee's designated ID number.")
);

Console.WriteLine(root);

关于c# - 生成命名空间的 XML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12253082/

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