首页 / 知识
关于.net:获取XElement的InnerXml的最佳方法?
2023-04-11 18:30:00

Best way to get InnerXml of an XElement?
在下面的代码中获取混合的
编写的代码几乎可以实现我想要的功能,但是包含周围的
我想看看这些建议的解决方案中哪种效果最好,所以我进行了一些比较测试。出于兴趣,我还将LINQ方法与Greg建议的普通的System.Xml方法进行了比较。这种变化很有趣,而不是我所期望的,最慢的方法要比最快的方法慢3倍以上。 结果按最快到最慢的顺序排序: 方法 我使用了一个具有20个相同节点(称为"提示")的XML文档:
上面显示为秒的数字是提取20个节点(连续1000次)的"内部XML"并取5次运行的平均值(均值)的结果。我没有包括加载和解析XML到
我使用的LINQ算法是:(C#-全部使用 CreateReader:
用字符串连接聚合:
StringBuilder:
String.Join在数组上:
数组上的String.Concat:
我没有在此处显示"普通的System.Xml"算法,因为它只是在节点上调用.InnerXml。 结论
如果性能很重要(例如很多XML,需要经常解析),我会每次使用Daniel的
如果您在具有很多节点(可能是100个)的大型元素上使用XML,那么您可能会开始发现使用 我认为这是一种更好的方法(在VB中,应该不难翻译): 给定XElement x:
在XElement上使用这种"扩展"方法怎么样?为我工作!
或使用一点Linq
注意:上面的代码必须使用 归功于那些发现并证明了最佳方法的人(谢谢!),在此将其包裹在扩展方法中:
保持简单高效:
我最终使用了这个:
我个人最终使用Aggregate方法编写了
这样,我的客户端代码就和旧的System.Xml命名空间一样简洁:
@Greg:看来您已将答案编辑为完全不同的答案。对此我的回答是,我可以使用System.Xml进行此操作,但希望通过LINQ to XML来解决问题。 如果其他人想知道为什么我不能仅仅使用XElement的.Value属性来获取所需的内容,我将在下面保留原始答复: @Greg:Value属性连接任何子节点的所有文本内容。因此,如果body元素仅包含文本,则可以使用,但是如果包含XHTML,则可以将所有文本连接在一起,但不包含任何标签。
doc.ToString()或doc.ToString(SaveOptions)完成工作。 //使用Regex可能会更快,以简单地修剪begin和end元素标签
会为你做的工作 你懂?最好的办法是回到CDATA :(我在这里看解决方案,但我认为CDATA是迄今为止最简单,最便宜的,而不是最方便的开发方法。 想知道是否(注意我摆脱了b + =而只有b +)
效率可能会略低于
不是100%肯定的...但是浏览了Reflector中的Aggregate()和string.Join()...我想我把它读为Aggregate只是附加了一个返回值,所以本质上您会得到: 字符串=字符串+字符串 与string.Join相比,它在其中提到了FastStringAllocation之类的东西,这使我觉得Microsoft的人们可能在其中增加了一些额外的性能。当然,我的.ToArray()称呼我为否定,但我只想提出另一个建议。 是否可以使用System.Xml命名空间对象代替LINQ在这里完成工作?正如您已经提到的,XmlNode.InnerXml正是您所需要的。
|
最新内容
相关内容
python如何比较两个字符串是否相等
python如何比较两个字符串是否相等,培训,工作,字符串,两个,下面,以上,方法,更多,内容,python在实际的开发工作中,经常会遇到要判定两个字符串python怎么调用类方法
python怎么调用类方法,培训,方法,实例,静态,定义,参数,属性,对象,关键字,以上,python中的类用来描述具有相同的属性和方法的对象的集合。它定python判断元素是否是字符串类型
python判断元素是否是字符串类型,培训,异常,类型,实例,字符串,数据类型,对象,元素,参数,序列,isinstance()是Python中的一个内建函数语法:isinpython判断字符串是否包含中文
python判断字符串是否包含中文,培训,检测,代码,字符串,中文,字符,范围,空格,原理,以上,原理:中文字符的编码范围是:\u4e00-\u9fff只要编码在python判断字符串是否为小数的方法
python判断字符串是否为小数的方法,培训,代码,合法,小数点,小数,整数,字符串,方法,右边,左边,python想判断一个字符串是不是一个合法的小数,但python可以继承父类方法吗
python可以继承父类方法吗,培训,代码,名字,方法,动物,属性,编译器,这样的话,定义,里面,python继承,调用父类属性方法在python里面,继承一个类python怎么判断是否为空字符串
python怎么判断是否为空字符串,密码,培训,字符串,空格,字符,用户名,方法,两边,长度,全部,判断python中的一个字符串是否为空,可以使用如下方法python字符串连接的方法有哪些
python字符串连接的方法有哪些,培训,字符串,基础,方式,两个,变量,函数,空白,语言,功能,python中有很多字符串连接方式,下面总结一下:最原始的字pythonsplit分割字符串
pythonsplit分割字符串,培训,连续,网址,字符串,方法,字符,参数,空格,表示,制表符,注意,这里所说的方法,指的是字符串类型str本身所提供的,由于涉python字符串有哪些表达方式
python字符串有哪些表达方式,培训,字符串,斜线,方式,引号,备注,字符,中间,后面,表示,主要是python中字符串的几种表达,表示方式。python的几种python判断某元素是否是字符串
python判断某元素是否是字符串,培训,异常,字符串,数据类型,元素,对象,类型,函数,实例,参数,python中判断某一元素属于哪种类型,可以使用isinstpython怎么打印字符串长度
python怎么打印字符串长度,培训,字符串,长度,函数,参数,字符,文本,空格,变量,语法,与其他的语言一样,有时候需要查看或者说计算字符串的长度。