标签: xmldocument

XDocument或XmlDocument

我现在正在学习,XmlDocument但我刚刚遇到XDocument,当我试图搜索他们的差异或好处时,我找不到有用的东西,你能告诉我为什么你会使用一个而不是另一个吗?

c# xml xmldocument linq-to-xml

487
推荐指数
6
解决办法
18万
查看次数

将XmlDocument转换为String

以下是我目前正在将XMLDocument转换为String的方法

StringWriter stringWriter = new StringWriter();
XmlTextWriter xmlTextWriter = new XmlTextWriter(stringWriter);

xmlDoc.WriteTo(xmlTextWriter);

return stringWriter.ToString();
Run Code Online (Sandbox Code Playgroud)

这种方法的问题是如果我有"((引用)我在属性中)它会逃脱它们.

例如:

<Campaign name="ABC">
</Campaign>
Run Code Online (Sandbox Code Playgroud)

以上是预期的XML.但它回来了

<Campaign name=\"ABC\">
</Campaign>
Run Code Online (Sandbox Code Playgroud)

我可以做String.Replace"\"但是这个方法好吗?有没有什么副作用?如果XML本身包含"\",它会正常工作吗?

c# string quotes xmldocument escaping

206
推荐指数
4
解决办法
24万
查看次数

如何防止.NET的XmlDocument输出中的空白xmlns属性?

从.NET中的XmlDocument生成XML时,xmlns第一次插入没有关联命名空间的元素时会出现空白属性.怎么能防止这种情况?

例:

XmlDocument xml = new XmlDocument();
xml.AppendChild(xml.CreateElement("root",
    "whatever:name-space-1.0"));
xml.DocumentElement.AppendChild(xml.CreateElement("loner"));
Console.WriteLine(xml.OuterXml);
Run Code Online (Sandbox Code Playgroud)

输出:

<root xmlns="whatever:name-space-1.0"><loner xmlns="" /></root>
Run Code Online (Sandbox Code Playgroud)

期望的输出:

<root xmlns="whatever:name-space-1.0"><loner /></root>
Run Code Online (Sandbox Code Playgroud)

是否有适用于XmlDocument代码的解决方案,而不是将文档转换为字符串后出现的问题OuterXml

我这样做的原因是看看我是否可以使用XmlDocument生成的XML匹配特定协议的标准XML.空白xmlns属性可能不会破坏或混淆解析器,但它在我已经看到的此协议的任何用法中也不存在.

.net c# xml xmldocument xml-namespaces

115
推荐指数
4
解决办法
7万
查看次数

从XmlDocument获取带换行符的缩进XML的最简单方法是什么?

当我从头开始构建XML时XmlDocument,该OuterXml属性已经通过换行符很好地缩进了所有内容.但是,如果我调用LoadXml一些非常"压缩"的XML(没有换行或缩进),那么输出会OuterXml保持这种状态.所以......

从一个实例中获取美化XML输出的最简单方法是XmlDocument什么?

.net c# xmldocument outerxml

102
推荐指数
7
解决办法
14万
查看次数

将XML文件读入XmlDocument

我是C#的新手.我有XML文件(text.xml).我想读取它XmlDocument并将流存储在字符串变量中.

c# xml xmldocument

101
推荐指数
4
解决办法
26万
查看次数

XML文档到字符串

获取XML Document(org.w3c.dom.Document)的String表示形式的最简单方法是什么?这就是所有节点都在一条线上.

举个例子,来自

<root>
  <a>trge</a>
  <b>156</b>
</root>
Run Code Online (Sandbox Code Playgroud)

(这只是一个树形表示,在我的代码中它是一个org.w3c.dom.Document对象,所以我不能把它当作String)

"<root> <a>trge</a> <b>156</b> </root>"
Run Code Online (Sandbox Code Playgroud)

谢谢!

java xml string xmldocument dom

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

使用XmlDocument读取XML属性

如何使用C#的XmlDocument读取XML属性?

我有一个XML文件,看起来有点像这样:

<?xml version="1.0" encoding="utf-8" ?>
<MyConfiguration xmlns="http://tempuri.org/myOwnSchema.xsd" SuperNumber="1" SuperString="whipcream">
    <Other stuff />
</MyConfiguration> 
Run Code Online (Sandbox Code Playgroud)

我如何读取XML属性SuperNumber和SuperString?

目前我正在使用XmlDocument,我使用XmlDocument获取其中的值GetElementsByTagName(),这非常有效.我只是无法弄清楚如何获得属性?

.net c# xml xmldocument

76
推荐指数
5
解决办法
30万
查看次数

决定何时使用XmlDocument vs XmlReader

我正在优化自定义对象 - > XML序列化实用程序,它已完成并正常工作,这不是问题.

它通过将文件加载到XmlDocument对象中,然后递归遍历所有子节点来工作.

我认为也许使用XmlReader而不是XmlDocument加载/解析整个事情会更快,所以我也实现了那个版本.

算法完全相同,我使用包装类来抽象处理一个XmlNode与一个的功能XmlReader.例如,GetChildren方法yield返回子项XmlNode或SubTree XmlReader.

所以我写了一个测试驱动程序来测试这两个版本,并使用一个非平凡的数据集(一个900kb的XML文件,大约有1,350个元素).

但是,使用JetBrains dotTRACE,我发现XmlReader版本实际上比XmlDocument版本慢!XmlReader当我在迭代子节点时,似乎在读取调用中涉及一些重要的处理.

所以我要说这一切:

有什么优势/劣势XmlDocumentXmlReader,和你应该使用什么情况下要么?

我的猜测是,文件大小阈值XmlReader在性能上变得更经济,而且内存密集度更低.但是,该阈值似乎超过1MB.

ReadSubTree每次都在调用处理子节点:

public override IEnumerable<IXmlSourceProvider> GetChildren ()
{
    XmlReader xr = myXmlSource.ReadSubtree ();
    // skip past the current element
    xr.Read ();

    while (xr.Read ())
    {
        if (xr.NodeType != XmlNodeType.Element) continue;
        yield return new XmlReaderXmlSourceProvider (xr);
    }
}
Run Code Online (Sandbox Code Playgroud)

该测试适用于单个级别的许多对象(即宽和浅) …

c# xmldocument xmlreader xml-serialization

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

您如何比较两个XML文档?

作为一些广泛的单元测试的基类的一部分,我正在编写一个辅助函数,它在C#(.NET)中递归地将一个XmlDocument对象的节点与另一个XmlDocument对象的节点进行比较.一些要求:

  • 第一个文档是源代码,例如我希望XML文档看起来像什么.因此,第二个是我想要找到差异的那个,它不能包含不在第一个文档中的额外节点.
  • 当发现太多显着差异时必须抛出异常,并且应该通过人们对该描述进行瞥见来容易理解.
  • 子元素顺序很重要,属性可以按任何顺序排列.
  • 有些属性是可以忽略的; 特别是xsi:schemaLocationxmlns:xsi,虽然我希望能够通过在哪些.
  • 名称空间的前缀必须在属性和元素中都匹配.
  • 元素之间的空白是无关紧要的.
  • 元素将要么有子元素 InnerText,但不能同时.

虽然我正在废弃一些东西:有没有人写过这样的代码,是否有可能在这里分享?

顺便说一下,你会把第一个和第二个文件称为什么?我一直把它们称为"源"和"目标",但它感觉不对,因为是我希望目标看起来像,否则我抛出异常.

.net c# xml xmldocument compare

60
推荐指数
7
解决办法
8万
查看次数

如何更改XML属性

如何使用C#更改XML文件中元素的属性?

c# xml xmldocument linq-to-xml

60
推荐指数
3
解决办法
12万
查看次数