큰 XML 파일에서 XmlNodeList
을 받고 싶습니다.특정 요소 값 또는 특성 값이 주어진 문자열 목록에있는 경우 XmlNodeList 가져 오기
조건 : 나는 고유 한 ID 값의 List
이 IDLIST
케이스 말을 가지고 I :이 element
라는 ID가 IDLIST에서 값을 가진 모든 노드를 수집합니다.
사례 II :attribute
중 하나 인 id가 element
인 모든 노드를 수집하여 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 –
@Ioannis Karadimas : 감사합니다. 여기 XLIFF 구조를 업데이트했습니다. . – Indigo
내 게시물을 확인하십시오. 나는 그것을 파싱 할 수있는 예제를 제공했다. –