加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-15 18:34:19 所属栏目:百科 来源:网络整理
导读:我想创建具有特殊字符处理的 XML字符串.然而事实证明它太复杂并且通过生成错误的XML导致问题. 现在我正在考虑使用System.xml中的一些对象构建字符串,然后使用stringify()或从中获取字符串.我想这可以帮助我解决特殊情况. //Psudo codexmlDoc doc = new XMLDo
我想创建具有特殊字符处理的 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,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();
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读