总跟XML打交道,经常要使用XPath,但是总是使用的时候临时写,感觉稍微复杂些的功能自己就写不出了,需要系统的学习一下。
为了联系XPath,中午花了一点儿时间写了个小玩意儿,就是个原型,先做个记号,免得忘了这茬儿,以后有时间再改进。
代码如下:
string
xmlContent;
string
xpath;
string
xmlResult;
public
Form1()
{
InitializeComponent();
}
private void buttonGo_Click( object sender, EventArgs
e)
{
ClearFormat();
xmlContent = richTextBox.Text;
if ( string
.IsNullOrEmpty(xmlContent))
{
MessageBox .Show( "Please enter the xml content"
);
}
xpath = textBoxXPath.Text;
if ( string
.IsNullOrEmpty(xpath))
{
MessageBox .Show( "Please enter the XPath"
);
}
XmlDocument xd = new XmlDocument
();
xd.LoadXml(xmlContent);
xmlContent = xd.OuterXml;
richTextBox.Text = xmlContent;
XmlNodeList
xnl = xd.SelectNodes(xpath);
int
startIndex = 0;
// Iteration to all chicl nodes of document baseLine
foreach ( XmlElement xe in
xnl)
{
string
selection = xe.OuterXml;
int
selectionStartPosition = xmlContent.IndexOf(selection, startIndex);
if
(selectionStartPosition > -1)
{
richTextBox.Select(selectionStartPosition, selection.Length);
richTextBox.SelectionBackColor =
Color
.Yellow;
}
}
}
private void
ClearFormat()
{
richTextBox.SelectAll();
richTextBox.SelectionBackColor =
Color
.White;
用到的XPath的资源:
http://www.w3school.com.cn/xpath/xpath_syntax.asp