指定したノード以下のXMLツリーを後順に走査して要素値を表示する
/// <summary>
/// 指定したノードの要素値を返す
/// </summary>
private static string getText(XmlNode node)
{
XmlNodeList childNodes = node.ChildNodes;
string str = "";
foreach (XmlNode child in childNodes)
{
if (child.NodeType == XmlNodeType.Text)
{
str += child.Value;
}
}
return str;
}
/// <summary>
/// 指定したノード以下のXMLツリーを後順に走査して要素値を表示する
/// </summary>
private static void travers(XmlNode node)
{
XmlNodeList childNodes = node.ChildNodes;
Regex theRegex = new Regex("\r|\n|\t| ");
foreach (XmlNode child in childNodes)
{
if (child.NodeType == XmlNodeType.Element)
{
travers(child);
}
}
Console.WriteLine(theRegex.Replace(getText(node),""));
}
static void Main(string[] args)
{
XmlDocument doc = new XmlDocument();
doc.Load("[[test]].xml");
XmlElement root = doc.DocumentElement;
XmlNodeList test = doc.ChildNodes;
travers(test[1]);
}
[test.xml]
<?xml version="1.0" encoding="shift_jis"?>
<chunk>
渡した。
<chunk>
太郎は
</chunk>
<chunk>
本を
<chunk>
持っている。
<chunk>次郎が</chunk>
</chunk>
</chunk>
<chunk>
花子に
</chunk>
</chunk>
[出力結果]
太郎は
次郎が
持っている。
本を
花子に
渡した。
最終更新:2009年02月13日 16:03