我有这个:
var doc = new XmlDocument();
doc.LoadXml("<XMLHERE/>"); //This returns void
如何合并为一个声明?
答案 0 :(得分:5)
使用返回XDocument对象的静态XDocument.Parse(string xml);
XDocument doc = XDocument.Parse("<XMLHERE/>");
答案 1 :(得分:4)
您不能,以免丢失对文档(doc
)的引用,因此发现它无法访问。
由于其他答案已经开始过滤而与我的断言相矛盾,我要说的就是这个。当然,你可以创建一种方法来为你做“肮脏的工作”,但是你不是真的只是把它变成一个单行,你只是脱离了创造(和除非你需要在数百个不同的地方写这个,否则不会真正保存。)
在许多情况下这可能不是一件坏事,但定义一个带有单一扩展方法的类来促进这一点似乎很荒谬。在一个可以广泛使用的类中,在本地指定它可能是另一回事。
总而言之,我的答案仍然是根本性的,而不是考虑你可以“解决”这个问题的许多人为的方法。
答案 2 :(得分:2)
这可能是你最好的(替代两行)选项......
public static XmlDocument MyLazyAssFunction(xml)
{
var doc = new XmlDocument();
doc.LoadXml(xml);
return doc;
}
然后这是你的单一陈述......
var doc = MyLazyAssFunction("<XMLHERE/>");
这里的重点是你原来的两条线是完成你需要做的事情的完美方式..而且它非常易读,因为它也是如此
答案 3 :(得分:1)
仅使用XmlDocument
API,您无法在一行中执行此操作并保留XmlDocument
引用。但是你可以写一个帮助API
public static class XmlUtils {
public static XmlDocument CreateDocument(string xml) {
var doc = new XmlDocument();
doc.LoadXml(xml);
return doc;
}
}
var doc = XmlUtils.CreateDocument("<XMLHERE/>");
答案 4 :(得分:1)
你做不到。如果定义变量不计为语句,则可以写:
XmlDocument doc;
(doc = new XmlDocument()).LoadXml("<XMLHERE/>");
答案 5 :(得分:1)
您可以撰写extension
:
public static XmlDocument MyLoad(this XmlDocument doc, string xml)
{
doc.LoadXml(xml);
return doc;
}
用法:
var doc = new XmlDocument().MyLoad(xml);