2012-06-10 4 views
-2

Это мой XML:Добавить текст в узел XML в F #

<location> 
    <hotspot name="name1" X="444" Y="518" /> 
    <hotspot name="name2" X="542" Y="452" /> 
    <hotspot name="name3" X="356" Y="15" /> 
</location> 

, что я хочу сделать, это:

<location> 
    <hotspot name="name1" X="444" Y="518"> 
    <text> 
     This is the text I want to add in 
    </text> 
    </hotspot> 
    <hotspot name="name2" X="542" Y="452" /> 
    <hotspot name="name3" X="356" Y="15" /> 
</location> 

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

+0

Вы оставляете много информации. Можем ли мы предположить, что вы используете System.Xml? Что именно вы пробовали? – ChaosPandion

ответ

2

Поскольку вы помечено вопрос с XmlNode, я предполагаю, что вы используете XmlDocument тип из System.Xml (в отличие от более современной Linq к типу XDocument XML).

Чтобы добавить новый узел с текстом тела, вы можете создать новый элемент (с требуемым именем), а затем установить его свойство InnerText значения, чтобы задать текст в узле:

// Load XML document and find the parent node 
let doc = XmlDocument() 
doc.LoadXml("... your xml goes here ...") 
let parent = doc.SelectSingleNode("/location/hotspot[@name='name1']") 

// Create a new element and set its inner text 
let newNode = doc.CreateElement("text") 
newNode.InnerText <- "foo" 
parent.AppendChild(newNode) 

Вы можете также напишите то же самое, указав свойство при вызове CreateElement следующим образом:

doc.CreateElement("text", InnerText = "foo") |> nd.AppendChild 
+0

это правильно, но существует ли способ иметь элемент «текст» не только на одной строке, но, как я писал в своем первом сообщении? –

+0

@FrankLioty Да. Если вы хотите добавить пробел (например, новую строку и некоторый интервал), вы можете использовать 'parent.AppendChild (doc.CreateWhitespace (" \ n "))'. –

+0

Я не могу заставить его работать: S –

Смежные вопросы