gpt4 book ai didi

c# - XElement 添加函数将 xmlns =""添加到 XElement

转载 作者:数据小太阳 更新时间:2023-10-29 01:44:16 26 4
gpt4 key购买 nike

我有一个为列表对象生成 xml 的函数:

public XDocument ToXML()
{
foreach (var row in this)
{
var xml = row.ToXml();
template.Root.Add(xml);
}
return template;
}

template.ToString() 显示:<RootElement xmlns="urn:testTools">

xml 显示:<Example><SubElement>testData</SubElement></Example>

在添加函数执行 template.ToString() 后,读取:<RootElement xmlns="urn:testTools"><Example xmlns=""><SubElement>testData</SubElement></Example>

所以由于某种原因添加了一个空的命名空间,我怎样才能阻止它这样做呢?

最佳答案

这是一个输出没有空命名空间的 xml 的示例。请注意奇怪的以 Linq 为中心的语法 rootNamespace + "MyElementName",这是 secret 。这是与整个文档相同的命名空间,因此不需要添加 xmlns。这是连接 XNamespace + 字符串,这是适用于 Linq 且 Linq 知道如何处理的“+”重载。 (如果没有 Linq,连接字符串和非字符串类型可能会出现编译错误)。请注意,这是针对 C# 项目文件执行的,该文件是一个方便的 Xml 文件。将其输出到控制台或富文本框控件。然后取出“rootNamespace +”,注意区别。

        XDocument doc = null;

using (StreamReader streamReader =
new StreamReader(@"myXml.csproj"))
{
doc = XDocument.Load(streamReader, LoadOptions.None);
}
XNamespace rootNamespace = doc.Root.Name.NamespaceName;

// A search which finds the ItemGroup which has Reference
// elements and returns the ItemGroup XElement.
XElement element = doc.Descendants().Where(p => p.Name.LocalName == "ItemGroup"
&& p.Descendants().First<XElement>().Name.LocalName == "Reference").First<XElement>();

// Create a completly new element with sub elements.
XElement referenceElement = new XElement(rootNamespace + "Reference",
new XElement(rootNamespace + "SpecificVersion", bool.FalseString),
new XElement(rootNamespace + "HintPath", "THIS IS A HINT PATH"));

// Add the new element to the main doc, to the end of the Reference elements.
element.Add(referenceElement);

// Add an attribute after the fact for effect.
referenceElement.SetAttributeValue("Include", "THIS IS AN INCLUDE");

rtb.Text = doc.ToString(SaveOptions.None);

关于c# - XElement 添加函数将 xmlns =""添加到 XElement,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2295523/

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