gpt4 book ai didi

c# - 如何在内存中创建 XML 文档并从中获取字符串

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

我想创建具有特殊字符处理功能的 XML 字符串。然而,事实证明它太复杂了,并且通过生成错误的 XML 导致了问题。现在我正在考虑使用 System.xml 中的某些对象构建字符串,然后使用 stringify() 或从中获取字符串。我想这会帮助我解决特殊字符情况。

//Psudo code
xmlDoc doc = new XMLDoc();
Element ele= new Element("xyz");
ele.value(Oob.property)
doc.appendNode(ele);
...

doc.getXMLString();

有人可以告诉我如何在 C# .NET2.0+ 中执行此操作吗。

最佳答案

我发现 XmlTextWriter 在编辑方面比 XmlDocument 更直观。

例如:

string xmlString = null;
using(StringWriter sw = new StringWriter())
{
XmlTextWriter writer = new XmlTextWriter(sw);
writer.Formatting = Formatting.Indented; // if you want it indented

writer.WriteStartDocument(); // <?xml version="1.0" encoding="utf-16"?>
writer.WriteStartElement("TAG"); //<TAG>

// <SUBTAG>value</SUBTAG>
writer.WriteStartElement("SUBTAG");
writer.WriteString("value");
writer.WriteEndElement();

// <SUBTAG attr="hello">world</SUBTAG>
writer.WriteStartElement("SUBTAG");
writer.WriteStartAttribute("attr");
writer.WriteString("hello");
writer.WriteEndAttribute();
writer.WriteString("world");
writer.WriteEndElement();

writer.WriteEndElement(); //</TAG>
writer.WriteEndDocument();

xmlString = sw.ToString();
}

在此代码之后 xmlString 将包含:

<?xml version="1.0" encoding="utf-16"?>
<TAG>
<SUBTAG>value</SUBTAG>
<SUBTAG attr="hello">world</SUBTAG>
</TAG>

附加信息:

使用 XmlDocument 将是:


XmlDocument doc = new XmlDocument();

XmlNode tagNode = doc.CreateNode(XmlNodeType.Element, "TAG", null);
doc.AppendChild(tagNode);

XmlNode subTagNode1 = doc.CreateNode(XmlNodeType.Element, "SUBTAG", null);
tagNode.AppendChild(subTagNode1);
XmlText subTagNode1Value = doc.CreateTextNode("value");
subTagNode1.AppendChild(subTagNode1Value);


XmlNode subTagNode2 = doc.CreateNode(XmlNodeType.Element, "SUBTAG", null);
tagNode.AppendChild(subTagNode2);
XmlAttribute subTagNode2Attribute = doc.CreateAttribute("attr");
subTagNode2Attribute.Value = "hello";

subTagNode2.Attributes.SetNamedItem(subTagNode2Attribute);
XmlText subTagNode2Value = doc.CreateTextNode("world");
subTagNode2.AppendChild(subTagNode2Value);

string xmlString = null;
using(StringWriter wr = new StringWriter())
{
doc.Save(wr);
xmlString = wr.ToString();
}

关于c# - 如何在内存中创建 XML 文档并从中获取字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4942884/

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