2012-03-19 2 views
1

В настоящее время я хочу узнать XMLNode из текстового местоположения.C# XML Editor - Соответствие XMLNode

У меня есть XML-файл в текстовом поле:

<Assets id="assets"> 
    <Asset id="background_asset" url="images/rooms/office/background.jpg" /> 
</Assets> 

, и я хотел, чтобы принести имя текущего узла от моего курсора/расположение каретки в текстовом поле

Я мог разобрать ток XML тег в позиции курсора/каретке, но я тогда не смог бы найти родитель ...

мне интересно, если есть способ получить XMLnode от XMLDocument

+0

Возможно, у меня что-то не хватает, но почему вы не можете использовать свойство [XmlNode.ParentNode] (http://msdn.microsoft.com/en-us/library/system.xml.xmlnode.parentnode.aspx)? –

+0

Я мог бы! Но я должен был бы разобрать весь XML-файл и не знать, какой узел я выбрал в TextBox – Vieo

ответ

1

Вы можете понять это:

1) Во-первых от текущей позиции курсора, получить первый < символ слева от курсора.

2) Затем Regex захватывает имя тега от <TagName.

У вас тогда будет достаточно, чтобы перейти к узлу с помощью этого имени. Затем вы захотите сравнить содержимое, если это имя содержит более одного узла. Затем вы можете использовать этот узел, чтобы получить его родитель и т.п.

Different идея:

Получить каждый узел вашего XML-документ, лишить его дочерние элементы, выводит его через .ToString() и получить его длину, а затем настроить индекс узлов по длине текста. Затем из позиции курсора возьмите свою позицию с начала документа в символах и определите, какой узел из индекса.