gpt4 book ai didi

c# - 使用 C# 创建 XML

转载 作者:太空宇宙 更新时间:2023-11-03 11:50:59 26 4
gpt4 key购买 nike

首先是我的代码。

IEnumerable<XElement> targetDirectory =
from XElement e in workingXmlDocument.Descendants(wixNS + "Directory")
where e.Attribute("Id").Value == "TARGETDIR"
select e;
foreach (var now in targetDirectory)
{
now.Add(XElement.Parse("<Directory Id='" + fileVariable.Directory.Name
+ @"' />"));
}

这是我正在尝试做的事情。我正在尝试搜索每个目录元素的属性 ID 值为 TARGETDIR。然后,我将一个新的目录元素放入其中,并以文件目录的名称命名。它就是这样做的。问题是它只是将所有目录放在一行中(没有换行符,没有缩进,什么都没有,只有原始数据),并且每个元素都包含一个空白的 xmlns 标记。我如何告诉它每个元素在 XML 文档中都应该有自己的行,我如何告诉它使用与文档其余部分相同的命名空间?我知道我可以明确地告诉它它应该有一个带有正确 NS 的 xmlns 属性,但这是我最不想做的事情。想法?

更新 - XML 编写器的代码

XmlWriterSettings settings = new XmlWriterSettings();
settings.Indent = true;
settings.NewLineHandling = NewLineHandling.Entitize;

using (XmlWriter currentWriter = XmlWriter.Create(filePath, settings))
{
workingXmlDocument.WriteTo(currentWriter);
currentWriter.Flush();
} // using (XmlWriter xw = XmlWriter.Create(FilePath))

从这里开始,它不会向上述代码中包含的元素添加新行。

最佳答案

我会按如下方式编写循环,提供命名空间。这应该会根据需要创建节点。

foreach (var now in targetDirectory)
{
now.Add(new XElement(
wixNS + "Directory",
new XAttribute("Id", fileVariable.Directory.Name));
}

我在这里假设 wixNSXNamespace 的一个实例,例如:

XNamespace wixNS = "http://schemas.microsoft.com/wix/2003/01/wi";

我不确定为什么缩进不起作用。

关于c# - 使用 C# 创建 XML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2147623/

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