我通常听说使用XDocument's Load或Parse方法将整个文件加载到内存中,这就是为什么不建议使用此方法解析大文件...但是如果我使用以下重载来读取xml文件怎么办?
XDocument xml = XDocument.Load(XmlReader.Create(@"C:\OP\file.xml", settings),LoadOptions.None);
Run Code Online (Sandbox Code Playgroud)
它是否仍然将整个文件加载到内存中,如果是这样,这个过载有什么用呢?
我想在不同的变量中使用不同的xml文件条件来获取不同节点的值.以下是一个例子
XDocument doc = XDocument.Load(@"D:\MyFiles\test.xml", LoadOptions.PreserveWhitespace);
var a = (from x in doc.Descendants("title")
select x).First().Value;
var b = (from y in doc.Descendants("label")
where y.Ancestors("sec").Any()
select y).First().Value;
var c = (from z in doc.Descendants("sec").Attributes("id")
select z).First().Value;
Run Code Online (Sandbox Code Playgroud)
我可以在一行代码中执行此操作,还是以不太冗余的方式执行此操作?
如何重新排列 a 的项目ContextMenuStrip?例如,如果我创建一个带有按钮的 Windows 窗体应用程序,并将 a 添加ContextMenuStrip到窗体中,并将其分配给按钮单击事件,并按顺序添加项目
run process1
run process2
run process3
Run Code Online (Sandbox Code Playgroud)
然后有一天我决定在ContextMenuStrip“运行 process4”中添加另一个项目,我希望序列类似于
run process1
run process4
run process2
run process3
Run Code Online (Sandbox Code Playgroud)
我该如何做到这一点(除了重命名每个项目并交换每个点击事件上的代码)?
如何在文件修改程序中使用进度条,每次处理文件时进度条都会增加,当处理完所有文件时它会达到全部值,即100我尝试了类似的东西
string files=Directory.GetFiles(path,"*.txt",SearchOption.AllDirectories);
foreach (var file in files) {
progressBar1.Value=progressBar1.Value+100/(files.Length);
//Do some modification
}
MessageBox.Show("Done");
Run Code Online (Sandbox Code Playgroud)
但即使在处理完所有文件后,进度条的值仍然不满,我做错了什么?
我尝试检查一个XML文件,节点disp-formula具有属性" ID "及属性包含类似值deqnX-Y其中两个X和Y是整数,如果发现匹配,然后在词典中增加他们在下面的方式
Key Value
"rid="deqnX"" "rid="deqnX-Y""
"rid="deqnX+1"" "rid="deqnX-Y""
... ...
"rid="deqnY"" "rid="deqnX-Y""
incrementing value of X by 1 till it reaches Y
Run Code Online (Sandbox Code Playgroud)
我已经尝试了下面的代码,但卡在中途,我无法弄清楚该做什么.
Dictionary<string, string> dict = new Dictionary<string, string>();
XDocument doc = XDocument.Load(@"D:\Practice\test.xml",LoadOptions.PreserveWhitespace);
var x =from y in doc.Descendants("disp-formula")
where y.Attribute("id").Value.Contains(@"deqn(\d+)-(\d+)")
select y.Attribute("id");
foreach (var item in x)
{
dict.Add(item);
}
Run Code Online (Sandbox Code Playgroud)
这是一个示例xml文件
<?xml version="1.0" encoding="UTF-8"?>
<article article-type="research">
<front>
<journal-meta>
<issn pub-type="paper">0327-286X</issn>
<publisher>
<publisher-name>IEEE</publisher-name>
</publisher>
</journal-meta>
<article-meta>
<article-id pub-id-type="doi">10.1245/11.202136</article-id>
<title-group>
<article-title>Dragon …Run Code Online (Sandbox Code Playgroud)