我想從一個巨大的XML文件中獲取XmlNodeList
。如果給定的字符串列表中存在特定元素值或其屬性值,則獲取XmlNodeList
條件: 我有一個List
唯一的ID值,說IDList表
案例一:收集所有地方element
稱爲ID具有價值IDList表的節點。
案例二:收集ID爲element
ID的attribute
其中一個ID爲IDList的所有節點。
簡而言之,只提取與IDList中給出的值匹配的節點。
我這樣做是使用一些循環加載這個XML到XmlDocument
遍歷所有節點和ID值,但我在尋找的是一些複雜的方法,以更快,更快速地完成它。 因爲循環不是大型XML文件的解決方案。
我嘗試:
try
{
using (XmlReader reader = XmlReader.Create(URL))
{
XmlDocument doc = new XmlDocument();
doc.Load(reader);
XmlNodeList nodeList = doc.GetElementsByTagName("idgroup");
foreach (XmlNode xn in nodeList)
{
string id = xn.Attributes["id"].Value;
string value = string.Empty;
if (IDList.Contains(id))
{
value = xn.ChildNodes[1].ChildNodes[1].InnerText; // <value>
if (!string.IsNullOrEmpty(value))
{
listValueCollection.Add(value);
}
}
}
}
}
catch
{}
XML(XLIFF)結構:
<XLIFF>
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="1.2">
<file date="2013-07-17">
<body>
<id idName="test_001" >
<desc-group name="test_001">
<desc type="text"/>
</desc-group>
<result-unit idName="test_001_text">
<source>abcd</source>
<result>xyz</result>
</result-unit>
</id>
</body>
</file>
</xliff>
收集像上面idName匹配的所有節點。
您附加的XML格式不正確,並且沒有描述文件的格式。另外,我不知道你的意思是XLIFF,但你的例子絕對不是這樣的:http://en.wikipedia.org/wiki/XLIFF –
@Ianannis Karadimas:謝謝,我剛剛更新了XLIFF結構。 – Indigo
請檢查我的帖子。我提供了一個可以解析它的例子。 –