gpt4 book ai didi

linq-to-xml - 使用 C# 和 XDocument,如何将 xsi 属性添加到某些 Xml 中?

转载 作者:行者123 更新时间:2023-12-04 18:15:38 26 4
gpt4 key购买 nike

我需要将 Linq 修复为 Xsd,以便它正确处理全局抽象复杂类型的元素数组,其中有多个派生的非抽象类型。
它不会添加 xsi 命名空间或使用其派生类型标记元素。
但首先我需要学习如何执行以下操作:

使用 C# 和 XDocument,如何将 xsi 命名空间和属性添加到以下 xml?

<?xml version="1.0" encoding="utf-8"?>
<Form>
<References>
<ReferenceID>0</ReferenceID>
<ReferenceType>string</ReferenceType>
<PermitNumber>string</PermitNumber>
</References>
<References>
<ReferenceID>0</ReferenceID>
<ReferenceType>string</ReferenceType>
<CaseNumber>string</CaseNumber>
</References>
</Form>

这就是我所拥有的,但这就是我需要的:

<?xml version="1.0" encoding="UTF-8"?>
<Form xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<References xsi:type="Permit">
<ReferenceID>0</ReferenceID>
<ReferenceType>String</ReferenceType>
<PermitNumber>String</PermitNumber>
</References>
<References xsi:type="Case">
<ReferenceID>0</ReferenceID>
<ReferenceType>String</ReferenceType>
<CaseNumber>String</CaseNumber>
</References>
</Form>

谢谢,

詹姆士。

最佳答案

只需像这样使用 XAttribute:

(“original.xml”文件包含您的第一个 xml)

var xml = XDocument.Load("original.xml");

XNamespace ns = "http://www.w3.org/2001/XMLSchema-instance";
var formNode = xml.Element("Form");
formNode.Add(new XAttribute(XNamespace.Xmlns + "xsi", ns));

var refs = formNode.Elements("References").ToList();
refs[0].Add(new XAttribute(ns + "type", "Permit"));
refs[1].Add(new XAttribute(ns + "type", "Case"));

string target = xml.ToString();

关于linq-to-xml - 使用 C# 和 XDocument,如何将 xsi 属性添加到某些 Xml 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11773747/

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