gpt4 book ai didi

c# - 创建具有属性的 XML 元素 C# 有额外的 xmls =""

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

以下是我的要求。我正在读取一个 xml 文件(*.csproj 文件)并在其中搜索一个节点。找到节点后,我会将我的元素插入其中。以下是我的原始 XML:

<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<ClInclude Include="Stdafx.h" />
<ClInclude Include="NewFile.h" />
</ItemGroup>
</Project>

以下是我执行此操作的代码片段。

        XmlDocument xDoc = new XmlDocument();
xDoc.Load(inputFile);

XmlNamespaceManager nsMgr = new XmlNamespaceManager(xDoc.NameTable);
string strNamespace = xDoc.DocumentElement.NamespaceURI;
nsMgr.AddNamespace("ns", strNamespace);
XmlNode root = xDoc.SelectSingleNode("/ns:Project/ns:ItemGroup/ns:ClInclude", nsMgr);

XmlAttribute attr = xDoc.CreateAttribute("Include");
attr.Value = "NewHeaderFile.h";

XmlElement xele = xDoc.CreateElement("ClInclude");
xele.Attributes.Append(attr);

root.ParentNode.AppendChild(xele);
xDoc.Save(outFile);

这是我得到的输出。

<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<ClInclude Include="Stdafx.h" />
<ClInclude Include="NewFile.h" />
<ClInclude Include="NewHeaderFile.h" xmlns="" />
</ItemGroup>
</Project>

问题陈述:我想忽略输出中的 xmlns="" 。我的输出应如下所示。

<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<ClInclude Include="Stdafx.h" />
<ClInclude Include="NewFile.h" />
<ClInclude Include="NewHeaderFile.h" />
</ItemGroup>
</Project>

Kinldy 帮助我。感谢您抽出宝贵时间。

最佳答案

使用以下内容更改您的元素声明并且应该可以工作

XmlElement xele = xDoc.CreateElement("ClInclude", xDoc.DocumentElement.NamespaceURI);

在根上添加命名空间意味着您的元素位于'root'命名空间中,因此无需向新元素添加'no namespace'

关于c# - 创建具有属性的 XML 元素 C# 有额外的 xmls ="",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27429343/

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