다시 설명해 드리겠습니다.고유 한 요소 값을 찾고 그룹 번호가있는 노드를 만들거나 표시합니다.
예를 들어 db 테이블이있는 경우 일부 열을 쿼리하고 해당 열의 모든 값을 합하여 고유 한 키를 만들고 새 열을 저장하고 다른 새 열을 숫자로 업데이트합니다. 다시 반복하고 다른 열 값의 조합이 이전 값과 중복되면 두 번째 열을 이전 값과 동일한 값으로 업데이트하고 그렇지 않으면 다음 시퀀스 번호를 업데이트합니다. 나는 XML 파일에서 그것을해야만한다.
e-g.
Combinatin of
values from
different nodes Value
--------------- --------
A-B-C-D-E 1
A-B-C-D-F 2
A-B-C-D-G 3
A-B-C-D-E 1
namespace XMLdemo2
{
class Program
{
static void Main(string[] args)
{
StringBuilder sb = new StringBuilder();
// will use this dictionary object to store and compare node values
Dictionary<String, String> Rxml = new Dictionary<string, string>();
String rdsName = "";
String rdrValue = "";
using (XmlReader reader = mlReader.Create(@"C:\Development\XML\Batch1823.xml"))
{
while (reader.Read())
{
switch (reader.NodeType)
{
case XmlNodeType.Element:
reader.ReadToFollowing("Machine");
reader.MoveToAttribute("machineId");
rdsName = reader.Name;
rdrValue = reader.Value;
sb.Append(rdsName).Append("=").Append(rdrValue);
reader.ReadToFollowing("Rod");
reader.MoveToAttribute("finalReference");
rdsName = reader.Name;
rdrValue = reader.Value;
sb.Append(rdsName).Append("=").Append(rdrValue);
reader.MoveToAttribute("color");
rdsName = reader.Name;
rdrValue = reader.Value;
sb.Append(rdsName).Append("=").Append(rdrValue);
reader.MoveToAttribute("length");
rdsName = reader.Name;
rdrValue = reader.Value;
sb.Append(rdsName).Append("=").Append(rdrValue);
reader.ReadToFollowing("Piece");
reader.MoveToAttribute("angle");
rdsName = reader.Name;
rdrValue = reader.Value;
sb.Append(rdsName).Append("=").Append(rdrValue);
reader.MoveToAttribute("angleA");
rdsName = reader.Name;
rdrValue = reader.Value;
sb.Append(rdsName).Append("=").Append(rdrValue);
reader.MoveToAttribute("angleB");
rdsName = reader.Name;
rdrValue = reader.Value;
sb.Append(rdsName).Append("=").Append(rdrValue);
reader.ReadToFollowing("Operations");
if (reader.ReadToDescendant("Operation"))
{
do
{
reader.MoveToAttribute("name");
rdsName = reader.Name;
rdrValue = reader.Value;
sb.Append(rdsName).Append("=").Append(rdrValue);
reader.MoveToAttribute("X");
rdsName = reader.Name;
rdrValue = reader.Value;
sb.Append(rdsName).Append("=").Append(rdrValue);
} while (reader.ReadToNextSibling("Operation"));
}
break;
default:
break;
}
}
}
Console.ReadKey();
}
}
}
모든 값을 읽고이 프로그램 그러나이 값을 기준으로 동일한 XML 파일에 동시에 그것을 작성하는 방법. 내 생각 엔이 노드 값의 조합을 Dictionary 개체의 키로 저장하고 Stringbuilder sb 값을 키와 비교하는 것입니다. 사전에서 발견되면 사전에 새 항목을 만들지 않고 xml에서 사전 및 업데이트의 가치를 얻지 만 어떻게해야합니까? 도와주세요.
감사
QF