【发布时间】:2014-04-22 21:40:41
【问题描述】:
我知道有很多方法可以做到这一点,但我正在寻找最简单的方法来做到这一点,而不必使用流式阅读器或更手动的东西,这将迫使我循环浏览整个文件并比较无休止字符串。一种可能是使用流阅读器来查找特定文本,然后使用一些 XML 库来检索节点。
这是我的 XML。这是我需要做的:
1) 找到标记 npid 的第一个实例,其中包含文本 要查找的文本
2) 提取节点 NodeToExtract 并将其存储在某个数据对象中。有几个名为 NodeToExtract 的节点,但我只想要在初始搜索文本后的第一个节点要查找的文本
<?xml version="1.0" encoding="ISO-8859-1"?>
<mdc>
<ne>
<neun>ADB</neun>
<nn>SubNetwork=Context</nn>
<nw>R33</nw>
<mi>
<nut>20140101</nut>
<hq>000</hq>
<nw>
<npid>Text to Find</npid>
<r>0</r>
</nw>
</mi>
</ne>
<ofid>
<ofun>ABC</ofun>
<ofdn>Blah</ofdn>
<ofsw>18R</ofsw>
</ofid>
<NodeToExtract>
<mts>More Blah</mts>
<gp>000</gp>
<mu>Value1</mu>
<mu>Value2</mu>
<mu>Value3</mu>
<mu>Value4</mu>
<mu>Value5</mu>
<nw>
<npid>ABC1221</npid>
<r>99</r>
<r>0</r>
<r>0</r>
<r>0</r>
<r>0</r>
</nw>
<nw>
<npid>ABC1222</npid>
<r>99</r>
<r>0</r>
<r>0</r>
<r>0</r>
<r>0</r>
</nw>
<nw>
<npid>ABC1223</npid>
<r>99</r>
<r>0</r>
<r>0</r>
<r>0</r>
<r>0</r>
</nw>
</NodeToExtract>
</mdc>
感谢任何帮助。
【问题讨论】:
-
您的 XML 格式错误,其中没有属性
Text to Find。 -
ReadSubTree 方法是你想要的,我认为...
-
我只知道有人会回复“您的 XML 格式错误”。为了消除任何混淆,XML 文件为 400K;我不能发布整个文件,现在可以吗?正如我在帖子中提到的,在 14,500 行中,这一部分是我最感兴趣的。最后,所以我写错了:有一个名为 npid 的标签,带有文本“要查找的文本”。你现在看到了吗?
-
为了分析你的XML结构,至少需要
working&well-formedXML片段。请发布well-formed最低样本。 -
我添加了一个格式良好的 XML 块。
标签: c# .net visual-studio-2010 linq linq-to-xml