标签: xmltextwriter

XmlTextWriter和XmlWriter有什么区别?

我在C#中看到这两个类:XmlTextWriterXmlWriter.任何人都可以解释差异并告诉我在哪里使用哪个?

c# xml xmlwriter xmltextwriter

29
推荐指数
1
解决办法
2万
查看次数

将XML插入SQL Server 2008数据库

您好我正在尝试将一些XML数据插入到SQL Server 2008上的表中.但是我不断抛出此错误;

XML解析:第1行,第39个字符,无法切换编码

数据库列filemeta使用XML数据类型,我将编码切换为UTF-16,我认为这是添加XML数据所必需的.

INSERT INTO testfiles
  (filename, filemeta) 
VALUES 
  ('test.mp3', '<?xml version="1.0" encoding="utf-16" standalone="yes"?><!--This is a test XML file--><filemeta filetype="Audio"><Comments /><AlbumTitle /><TrackNumber /><ArtistName /><Year /><Genre /><TrackTitle /></filemeta>');
Run Code Online (Sandbox Code Playgroud)

救命,我被困住了.

注意:我使用XMLTextWriter创建了XML.

xml sql sql-server xmltextwriter

27
推荐指数
2
解决办法
7万
查看次数

修改C#中的XML现有内容

目的:我计划使用XmlTextWriter创建XML文件,并使用XmlNode SelectSingleNode(),node.ChildNode [?]修改/更新一些现有内容.InnerText = someting等.

用XmlTextWriter创建XML文件后,如下所示.

XmlTextWriter textWriter = new XmlTextWriter("D:\\learning\\cs\\myTest.xml", System.Text.Encoding.UTF8);
Run Code Online (Sandbox Code Playgroud)

我练习下面的代码.但未能保存我的XML文件.

XmlDocument doc = new XmlDocument();
doc.Load("D:\\learning\\cs\\myTest.xml");

XmlNode root = doc.DocumentElement;
XmlNode myNode;

myNode= root.SelectSingleNode("descendant::books");
Run Code Online (Sandbox Code Playgroud)

....

textWriter.Close();

doc.Save("D:\\learning\\cs\\myTest.xml");  
Run Code Online (Sandbox Code Playgroud)

我发现按照我的方式生产是不好的.有什么建议吗?我不清楚同一个项目中XmlTextWriter和XmlNode的概念和用法.感谢您阅读和回复.

c# xml xmlnode xmltextwriter

20
推荐指数
4
解决办法
10万
查看次数

如何在XmlTextWriter中设置Settings属性,以便我可以在自己的行上编写每个XML属性?

我有一些代码,它将一个对象序列化为一个文件.我正在尝试将每个XML属性输出到单独的行.代码如下所示:

public static void ToXMLFile(Object obj, string filePath)
{
    XmlSerializer serializer = new XmlSerializer(obj.GetType());

    XmlWriterSettings settings = new XmlWriterSettings();
    settings.NewLineOnAttributes = true;

    XmlTextWriter writer = new XmlTextWriter(filePath, Encoding.UTF8);
    writer.Settings = settings; // Fails here.  Property is read only.

    using (Stream baseStream = writer.BaseStream)
    {
        serializer.Serialize(writer, obj);
    }
}
Run Code Online (Sandbox Code Playgroud)

唯一的问题是,对象的Settings属性XmlTextWriter是只读的.

如何SettingsXmlTextWriter对象上设置属性,以便NewLineOnAttributes设置有效?


嗯,我以为我需要一个XmlTextWriter,因为XmlWriter是一个abstract班级.如果你问我,有点困惑. 最终的工作代码在这里:

/// <summary>
/// Serializes an object to an XML file; writes each …
Run Code Online (Sandbox Code Playgroud)

c# xml serialization xmlwriter xmltextwriter

17
推荐指数
2
解决办法
2万
查看次数

XmlTextWriter错误地编写控制字符

.NET XmlTextWriter会创建无效的xml文件.

在XML中,允许一些控制字符,例如'horizo​​ntal tab'(&#x9;),但其他控件字符不像'vertical tab'(&#xB;).(见规格)

我有一个字符串,其中包含XML中不允许的UTF-8控制字符.
虽然XmlTextWriter逃避了角色,但最终的XML仍然是无效的.

如何确保XmlTextWriter永远不会生成非法的XML文件?

或者,如果无法执行此操作XmlTextWriter,如何从字符串中删除XML中不允许的特定控制字符?

示例代码:

using (XmlTextWriter writer =
  new XmlTextWriter("test.xml", Encoding.UTF8))
{
  writer.WriteStartDocument();
  writer.WriteStartElement("Test");
  writer.WriteValue("hello \xb world");
  writer.WriteEndElement();
  writer.WriteEndDocument();
}
Run Code Online (Sandbox Code Playgroud)

输出:

<?xml version="1.0" encoding="utf-8"?><Test>hello &#xB; world</Test>
Run Code Online (Sandbox Code Playgroud)

.net c# xml xmltextwriter control-characters

13
推荐指数
2
解决办法
1万
查看次数

清除XmlTextWriter和StringWriter中的所有内容

我想清除XmlTextWriter和StringWriter中的所有内容.Flush()没有成功.

XmlDocument doc = new XmlDocument(); StringWriter sw = new StringWriter(); XmlTextWriter xw = new XmlTextWriter(sw);

xw.WriteStartElement("AddPhoneQual"); xw.WriteElementString("Type", "B"); xw.WriteElementString("PhoneNumber", bookingDetails.PassengerList[0].PhoneNumber); xw.WriteEndElement(); //结束AddPhoneQual

doc.LoadXml(sw.ToString());

现在,我需要清除所有内容并开始用清晰的xw编写.

xw.Flush(); sw.Flush();

他们没有工作.

c# xmltextwriter stringwriter

10
推荐指数
1
解决办法
4499
查看次数

C#:XmlTextWriter.WriteElementString在空字符串上失败?

我正在使用XmlTextWriter它的WriteElementString方法,例如:

XmlTextWriter writer = new XmlTextWriter("filename.xml", null);

writer.WriteStartElement("User");
writer.WriteElementString("Username", inputUserName);
writer.WriteElementString("Email", inputEmail);
writer.WriteEndElement();

writer.Close();
Run Code Online (Sandbox Code Playgroud)

预期的XML输出是:

<User>
    <Username>value</Username>
    <Email>value</Email>
</User>
Run Code Online (Sandbox Code Playgroud)

但是,如果例如inputEmail为空,则得到结果XML,如下所示:

<User>
    <Username>value</Username>
    <Email/>
</User>
Run Code Online (Sandbox Code Playgroud)

而我希望它是:

<User>
    <Username>value</Username>
    <Email></Email>
</User>
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?有没有办法以简单的方式使用XmlTextWriter?实现我的预期结果?

c# xml xmltextwriter writeelementstring

8
推荐指数
2
解决办法
1万
查看次数

XmlDocument.WriteTo截断结果文件

尝试将XmlDocument序列化为文件.XmlDocument相当大; 但是,在调试器中,我可以看到InnerXml属性中包含所有XML blob - 它没有被截断.

这是将我的XmlDocument对象写入文件的代码:

// Write that string to a file.
var fileStream = new FileStream("AdditionalData.xml", FileMode.OpenOrCreate, FileAccess.Write);
xmlDocument.WriteTo(new XmlTextWriter(fileStream, Encoding.UTF8) {Formatting = Formatting.Indented});
fileStream.Close();
Run Code Online (Sandbox Code Playgroud)

这里生成的文件只写入5,760行 - 它实际上是在标记中间截断的!

任何人都有任何想法为什么会在这里截断?

更新:我找到了问题的根源.在关闭文件流之前,我没有关闭XML Text Writer!D'哦!

c# xml xmldocument xmltextwriter filestream

8
推荐指数
1
解决办法
2339
查看次数

xdocument save保留标签内的空白区域

我在LINQ中使用XDocument来编辑(插入)并保存xml文档.

XDocument doc = XDocument.Load("c:\\sample.xml", LoadOptions.PreserveWhitespace);
doc.Save("c:\\sample.xml",SaveOptions.DisableFormatting)
Run Code Online (Sandbox Code Playgroud)

doc.Save之前的sample.xml:

<ELEMENT ATTRIB1="attrib1"  ATTRIB2="attrib2" >
    value
</ELEMENT>
Run Code Online (Sandbox Code Playgroud)

doc.Save之后的sample.xml

<ELEMENT ATTRIB1="attrib1" ATTRIB2="attrib2">
    value
</ELEMENT>
Run Code Online (Sandbox Code Playgroud)

如您所见,在原始文档中ATTRIB1之后有一个双空格,在ATTRIB2之后有一个空格.但是当我调用doc.save时,linq已经删除了这些空格.

如何保留标签内的空格?

c# xmltextwriter linq-to-xml

7
推荐指数
1
解决办法
7184
查看次数

如何防止&转换为&amp; 使用XmlTextWriter?

文本中的'&'被转义并在&amp;使用XmlTextWriter创建xml文件时转换为但我不希望转换如何防止它?

除了使用xmltextwriter的WriteRaw函数之外还有其他方法吗?

c# xml vb.net escaping xmltextwriter

5
推荐指数
1
解决办法
7361
查看次数