标签: xmltextwriter

如何使用多个缩进设置保存XmlDocument?

我需要将一个XmlDocument文件保存到适当的缩进文件中,(Formatting.Indented)但是一些带有子项的节点必须在一行中(Formatting.None).

如何实现这一点,因为XmlTextWriter接受整个文档的设置?


在@Ahmad Mageed的resposne之后编辑:

我不知道在写入过程中可以修改XmlTextWriter设置.那是好消息.

现在我正在以这种方式保存xmlDocument(已经填充了节点,具体是.xaml页面):

XmlTextWriter writer = new XmlTextWriter(filePath, Encoding.UTF8);
writer.Formatting = Formatting.Indented;
xmlDocument.WriteTo(writer);
writer.Flush();
writer.Close();
Run Code Online (Sandbox Code Playgroud)

当然,它可以在所有节点中实现缩进.我需要在处理所有<Run>节点时禁用缩进.

在您的示例中,您"手动"写入XmlTextWriter.有没有一种简单的方法来爬行所有xmlDocument节点并将它们写入XmlTextWriter,以便我可以检测<Run>节点?或者我是否必须编写某种递归方法,这种方法将转发给当前节点的每个子节点?

.net c# xmldocument indentation xmltextwriter

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

使用XmlTextWriter时如何在xml元素值中的换行符后缩进?

我在使用XmlTextWriter时尝试在换行符后缩进

所以基本上我想要这个

<?xml version="1.0" encoding="utf-16"?>
<element>
  a
</element>
Run Code Online (Sandbox Code Playgroud)

但是使用下面的代码我得到了这个

<?xml version="1.0" encoding="utf-16"?>
<element>
a
</element>
Run Code Online (Sandbox Code Playgroud)

这是我目前的测试工具

[Test]
public void XmlIndentingTest()
{
    var provider = new StringBuilder();
    var settings = new XmlWriterSettings
                       {
                           Indent = true,
                           IndentChars = "  ",
                       };
    using (var writer = new StringWriter(provider))
    {
        using (var xmlWriter = XmlTextWriter.Create(writer, settings))
        {
            xmlWriter.WriteStartElement("element");
            xmlWriter.WriteString("\r\na\r\n");
            xmlWriter.WriteEndElement();
        }
    }
    Debug.WriteLine(provider.ToString());
}
Run Code Online (Sandbox Code Playgroud)

.net xml xmltextwriter

4
推荐指数
1
解决办法
2764
查看次数

内存流是空的

我需要从不同的源(函数)生成一个巨大的xml文件.我决定使用,XmlTextWriter因为它使用的内存少于XmlDocument.

首先,启动XmlWriter底层证券MemoryStream

MemoryStream ms = new MemoryStream();
XmlTextWriter xmlWriter = new XmlTextWriter(ms, new UTF8Encoding(false, false));
xmlWriter.Formatting = Formatting.Indented;
Run Code Online (Sandbox Code Playgroud)

然后我将XmlWriter(注意xml编写器保持打开直到最后)传递给一个函数来生成XML文件的开头:

xmlWriter.WriteStartDocument();

xmlWriter.WriteStartElement();

// xmlWriter.WriteEndElement(); // Do not write the end of root element in first function, to add more xml elements in following functions

xmlWriter.WriteEndDocument();
xmlWriter.Flush();
Run Code Online (Sandbox Code Playgroud)

但是我发现底层内存流是空的(通过将字节数组转换为字符串和输出字符串).有什么想法吗?

另外,我有一个关于如何从不同的源(函数)生成一个巨大的xml文件的一般性问题.我现在所做的是保持XmlWriter开放(我假设底层内存流也应该打开)到每个函数并写入.在第一个函数中,我没有写根元素的结尾.在最后一个函数之后,我通过以下方式手动添加根元素的结尾:

string endRoot = "</Root>";
byte[] byteEndRoot = Encoding.ASCII.GetBytes(endRoot);
ms.Write(byteEndRoot, 0, byteEndRoot.Length); 
Run Code Online (Sandbox Code Playgroud)

不确定这是否有效.

非常感谢!

c# xmltextwriter

4
推荐指数
1
解决办法
5879
查看次数

如何在CR中生成XML,而不是在XmlTextWriter中生成CRLF

我正在通过XmlTextWriter生成XML.

该文件看起来很好,验证(在wc3),并被客户接受.

但客户端供应商抱怨线路终端是CRLF,而不仅仅是CR.

好吧,我在使用C#的Win32机器上,而CRLF是Win32标准的行结束.有没有办法改变XmlTextWriter中的行结尾?

另外 - 对于正确的XML解析器,行结尾不应该无关紧要吗?

另请参阅:什么是回车,换行和换页?

注意:看起来唯一的答案是横向解决方案 - 您必须使用XmlWriter而不是XmlTextWriter

c# xml newline xmltextwriter

3
推荐指数
2
解决办法
3918
查看次数

在调试器中查看XmlTextwriter内容

我正在研究一些非常复杂的代码,它使用XmlTextwriter写入内存流.有没有办法在Visual Studio调试中查看memorystream/XmlTextwriter的内容,因为我正在逐步执行代码.

c# asp.net debugging memorystream xmltextwriter

3
推荐指数
1
解决办法
2151
查看次数

如何从C#生成XML格式

我正在使用XmlTextWriter从C#应用程序生成XML.初始输入将是这种格式,1",但我可以用任何东西替换它.我需要最终1&quot;得到,但我一直在1&amp;quot;

C#

    xml.WriteStartElement("data");
    xml.WriteAttributeString("type", "wstring");
    xml.WriteString("1&quot;");
    xml.WriteEndElement();
Run Code Online (Sandbox Code Playgroud)

哈!当我通过我需要的XML时,它将它转换为1".但我真正需要展示的是1&quot;代码的第3行中的实际情况.

我还需要使用/和Ø.我怎么能这样做,谢谢.

c# xml xmltextwriter

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

如何在xml中写'&'?

我正在使用xmlTextWriter来创建xml.

writer.WriteStartElement("book"); 
writer.WriteAttributeString("author", "j.k.rowling"); 
writer.WriteAttributeString("year", "1990");
writer.WriteString("&");
writer.WriteEndElement();
Run Code Online (Sandbox Code Playgroud)

但是现在我需要写'&'但是xmlTextWriter会自动将这个写为"&"; 那么有什么工作要做吗?

我正在通过阅读doc文件来创建xml.所以如果我读" - "然后在xml中我需要写"&ndash";所以在写它时写的是"&"ndash.

因此,例如,如果我尝试用文本编写节点good-bad,我实际上需要编写我的XML,例如<node>good&ndash;bad</node>.这是我的项目的要求.

c# xml xmltextwriter

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

如何在c#中编写XML?

<Account nr="401" name="Wasser/Abwasser" income="0.00" expenditure="1,310.74" saldo="-1,310.74" resultText="Es wurden ausgegeben">
    <Accounting date="15.02." refNr="....." description="I/2013"  income="" expenditure="1,310.74" vat="10%" pretax="131.07"/>
  </Account>
Run Code Online (Sandbox Code Playgroud)

我可以使用XmlTextWriter但不知道如何继续使用nr,name .....

myXmlTextWriter.WriteStartElement("Account");.....
myXmlTextWriter.WriteElementString("Accounting",......
Run Code Online (Sandbox Code Playgroud)

谢谢

c# xml xmltextwriter

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

C#System.Xml.Serialization-仅使用&lt;a&gt; &lt;/a&gt;而从不使用&lt;a/&gt;

我的客户遇到一个奇怪的问题-我正在读取XML文档(实际上是InfoPath文档)XmlSerializer,进行修改,然后使用编写XML文档XmlSerializer,然后使用来添加一些处理指令XmlTextWriter。一切运行良好,并且生成的文档实际上完全符合XML,并且可以由InfoPath读取。但是,结构发生的变化是原始文档中所有空标签都以表格形式写入<A></A>,而在编写文档时,该文档变为<A/>。由于XML标准,实际上完全相同。但是,我的客户(一家大公司)显然具有一些带有hardcoded的检查/验证脚本<A></A>,但是它们失败了。他现在很沮丧,并且懒得更改脚本,并且想要这种<A></A>符号!我该如何设定XmlTextWriter 去做吧?

c# xml xml-serialization xmltextwriter xmlserializer

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

我想编辑xml文件

替代文字

我修改了d xml文件的结构.我想编辑可见的值

c# xml asp.net xmlreader xmltextwriter

0
推荐指数
1
解决办法
254
查看次数

使用 vb.net 将 XmlTextWriter 输出导出为字符串

我想将 XmlTextWriter 输出数据导出(转换)到字符串变量。

我的代码如下:

        '' write data as xml
        Dim objX As New XmlTextWriter(Response.OutputStream, Encoding.UTF8)
        objX.WriteStartDocument()
        objX.WriteStartElement("Transaction")
        objX.WriteAttributeString("version", "1.0")
        objX.WriteElementString("id", "12")
        objX.WriteElementString("token", "4534gfdgdfhfst")


        objX.WriteEndElement()

        objX.WriteEndDocument()

        objX.Flush()

        objX.Close()
        Response.End()
Run Code Online (Sandbox Code Playgroud)

现在得到的 xml 输出是这样的: 38824e4760a1b72f9bd95723a3bdffbd02280010.50en3475990rapids1 month rapidshare0.46587748175.136.184.1539/14/2012d7a1ff2200f9fe7b8b89d12fdc8be8f36293??712eS. how to make it as xml tags

xml vb.net string xmltextwriter

0
推荐指数
1
解决办法
7771
查看次数