Tag: xmlwriter

XML WriteAttributeString错误

当我在这里写这个条目时: 使用此代码: xmlWriter.WriteStartElement(“XmlRoot”); xmlWriter.WriteAttributeString(“xmlns”, “xsi”, null, “http://www.w3.org/2001/XMLSchema-instance”); xmlWriter.WriteAttributeString(“xmlns”, null, null, “urn:nsSBAK”); xmlWriter.WriteAttributeString(“schemaLocation”, null, “urn:nsSBAK SBAK.xsd”); 我收到调试错误: 在同一个start元素标记内,前缀”不能从”重新定义为’urn:nsSBAK’。 你能帮助我吗 ?

当xml:space = preserve时,XmlWriter插入空格

鉴于此代码(C#,.NET 3.5 SP1): var doc = new XmlDocument(); doc.LoadXml(“” + “” + “content” + “content” + “”); var text = new StringWriter(); var settings = new XmlWriterSettings() { Indent = true, CloseOutput = true }; using (var writer = XmlWriter.Create(text, settings)) { doc.DocumentElement.WriteTo(writer); } var xml = text.GetStringBuilder().ToString(); Assert.AreEqual(“\r\n\r\n” + ” content” + “content\r\n”, xml); […]

什么是编写XML的最快方法

我需要经常创建XML文件,我选择XmlWrite来完成这项工作,我发现它花了很多时间在WriteAttributeString之类的东西上(在某些情况下我需要写很多属性),我的问题是有没有更好的方法来创建xml文件? 提前致谢。

c#using + XmlWriter.Create =“无法访问已关闭的流。”

为何如此有效: using (var ms = new MemoryStream()) { using (var dummy = new StreamWriter(ms)) { var sw = new StreamWriter(ms); sw.WriteLine(“Hello World”); sw.Flush(); using (StreamReader rdr = new StreamReader(ms)) { ms.Position = 0; textBoxExc.Text = rdr.ReadToEnd(); } } } 但这不起作用(“无法访问封闭的流。”):唯一的区别是var dummy = XmlWriter.Create(ms)而不是var dummy = new StreamWriter(ms) using (var ms = new MemoryStream()) { using […]

C#Parallel库,XmlReader,XmlWriter

我有一个用例,我需要: 遍历Xml文档中的每个Input节点 对每个输入执行时间密集的计算,并且 将结果写入XML文件。 输入看起来像这样: ABC123 MA Goldman BCD234 CA Goldman 和输出: ABC123 MA Goldman 75.00 Blah BCD234 CA Goldman 55.00 Ack 我想并行运行计算; 典型的输入文件可能有50,000个输入节点,没有线程的总处理时间可能是90分钟。 大约90%的处理时间花在步骤#2(计算)上。 我可以很容易地并行迭代XmlReader : static IEnumerable EnumerateAxis(XmlReader reader, string axis) { reader.MoveToContent(); while (reader.Read()) { switch (reader.NodeType) { case XmlNodeType.Element: if (reader.Name == axis) { XElement el = XElement.ReadFrom(reader) as XElement; if […]

如何使用WriteEndElement检查元素的名称

我正在用XmlWriter编写xml。 我的代码有很多这样的部分: xml.WriteStartElement(“payload”); ThirdPartyLibrary.Serialise(results, xml); xml.WriteEndElement(); // 问题是ThirdPartyLibrary.Serialise方法不可靠。 它可能会发生(取决于变量results )它不会关闭它打开的所有标记。 因此,我的WriteEndElement行被变态,消耗了关闭库的挂起标记,而不是写 。 因此,我想对WriteEndElement进行一次检查,检查元素名称,并抛出exception,除非光标位于期望的元素。 xml.WriteEndElement(“payload”); 除非光标位于文档中的预期位置,否则您可以将其XmlReader.ReadStartElement(name) 。 我怎样才能做到这一点? 编辑:此扩展方法的第二个用例是使我自己的代码更具可读性和可靠性。

字符串转义为XML-Attribute

我看了一下XML转义字符串 ,发现它非常有用。 我想做类似的事情:转义要在XML-Attribute中使用的字符串。 该字符串可能包含\ r \ n。 XmlWriter类产生类似\ r \ n – >
 我目前使用的解决方案包括XmlWriter和StringBuilder,而且非常难看。 任何提示? EDIT1: 抱歉让LarsH失望,买我的第一个方法是 public static string XmlEscapeAttribute(string unescaped) { XmlDocument doc = new XmlDocument(); XmlAttribute attr= doc.CreateAttribute(“attr”); attr.InnerText = unescaped; return attr.InnerXml; } 这是行不通的。 XmlEscapeAttribute(“Foo\r\nBar”)将导致”Foo\r\nBar” 我使用.NET Reflector来了解XmlTextWriter如何转义属性。 它使用内部的XmlTextEncoder类… 我的方法我目前正在使用这样的方法: public static string XmlEscapeAttribute(string unescaped) { if (String.IsNullOrEmpty(unescaped)) return unescaped; XmlWriterSettings settings […]

将XMLDocument写入具有特定换行符的文件(c#)

我有一个我从文件中读到的XMLDocument。 该文件是Unicode,并且具有换行符’\ n’。 当我把XMLDocument写回来时,它有换行符’\ r \ n’。 这是代码,非常简单: XmlTextWriter writer = new XmlTextWriter(indexFile + “.tmp”, System.Text.UnicodeEncoding.Unicode); writer.Formatting = Formatting.Indented; doc.WriteTo(writer); writer.Close(); XmlWriterSettings有一个属性NewLineChars,但是我无法在’writer’上指定settings参数,它是只读的。 我可以使用指定的XmlWriterSettings属性创建XmlWriter,但XmlWriter没有格式化属性,导致文件根本没有换行符。 所以,简而言之,我需要编写一个带有换行符’\ n’和Formatting.Indented的Unicode Xml文件。 思考?

为什么XmlWriter总是输出utf-16编码?

我有这种扩展方法 public static string SerializeObject(this T value) { var serializer = new XmlSerializer(typeof(T)); var settings = new XmlWriterSettings { Encoding = new UTF8Encoding(true), Indent = false, OmitXmlDeclaration = false, NewLineHandling = NewLineHandling.None }; using(var stringWriter = new StringWriter()) { using(var xmlWriter = XmlWriter.Create(stringWriter, settings)) { serializer.Serialize(xmlWriter, value); } return stringWriter.ToString(); } } 但每当我调用它时,它的编码为utf-16指定,即 。 我究竟做错了什么?

使用dot.net c#序列化和反序列化XML

我花了几个小时的时间来阅读以下代码,看了很多似乎过时或看起来似乎没有工作的代码。 如果它对任何人的任何帮助是最终的工作代码。 如果可以改进,可以免费评论:-) public class SerializationHelper { #region static string SerializeObject( T obj, Encoding encoding ) /// /// Serialize an [object] to an Xml String. /// /// Object Type to Serialize /// Object Type to Serialize /// System.Text.Encoding Type /// Empty.String if Exception, XML string if successful /// /// // UTF-16 Serialize /// string xml […]