gpt4 book ai didi

c# - 将 XML 字符串注入(inject) XmlWriter 时的 XML 缩进

转载 作者:IT王子 更新时间:2023-10-29 04:47:08 25 4
gpt4 key购买 nike

我有一个写入文件的 XmlTextWriter 和一个使用该文本编写器的 XmlWriter。此文本编写器设置为输出制表符缩进的 XML:

XmlTextWriter xtw = new XmlTextWriter("foo.xml", Encoding.UTF8);
xtw.Formatting = Formatting.Indented;
xtw.IndentChar = '\t';
xtw.Indentation = 1;

XmlWriter xw = XmlWriter.Create(xtw);

根据 Jeff 的 MSDN 链接更改:

XmlWriterSettings set = new XmlWriterSettings();
set.Indent = true;
set.IndentChars = "\t";
set.Encoding = Encoding.UTF8;

xw = XmlWriter.Create(f, set);

这不会改变最终结果。


现在,我在我的 XmlWriter 中处于任意深度,并且我从其他地方(我无法控制)获得了一个 XML 字符串,它是一个单行、非缩进的 XML。如果我调用 xw.WriteRaw(),那么该字符串将被逐字注入(inject),并且不会遵循我想要的缩进。

...
string xml = ExternalMethod();
xw.WriteRaw(xml);
...

本质上,我想要一个 WriteRaw 来解析 XML 字符串并遍历所有 WriteStartElement 等,以便根据 XmlTextWriter 的设置重新格式化。

我的偏好是使用我已有的设置来执行此操作,并且无需重新加载最终的 XML 即可重新格式化它。我也不希望使用 XmlReader 之类的工具来解析 XML 字符串,然后将其发现的内容模拟到我的 XmlWriter 中(非常非常手动的过程)。

最后,我宁愿有一个简单的解决方案,也不愿有一个符合我喜好的解决方案。 (当然,最好的解决方案应该很简单并且符合我的喜好。)

最佳答案

如何使用 XmlReader 将 xml 读取为 xml 节点?

string xml = ExternalMethod();
XmlReader reader = XmlReader.Create(new StringReader(xml));
xw.WriteNode(reader, true);

关于c# - 将 XML 字符串注入(inject) XmlWriter 时的 XML 缩进,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/858630/

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