2013-07-25 135 views
0

我有一个包含一些XML字符串:插入XML到XML元素

<some> 
    <xml></xml> 
    <tags/> 

    <TheData/> 

    <more>asdf</more> 
    <of/> 
    <them></them> 
</some> 

代替<TheData/>我们可以有<TheData></TheData>或其他等价形式。

问题:

1:我怎样才能确保XML确实包含TheData元素?

2:如何插入另一个XML字符串,HTML编码的TheData

<mydata> 
    <name>John</name> 
    <address>New York City</address> 
</mydata> 

最终结果:

<some> 
    <xml></xml> 
    <tags/> 

    <TheData> 
    &lt;mydata&gt; 
     &lt;name&gt;John&lt;/name&gt; 
     &lt;address&gt;New York City&lt;/address&gt; 
    &lt;/mydata&gt; 
    </TheData> 

    <more>asdf</more> 
    <of/> 
    <them></them> 
</some> 

是否有快速的方法与例如要做到这一点其他的XML实例LINQ to XML?

+1

''和''是等同的。你真的不应该在乎哪一个。 –

+0

@DanielHilgarth你说得对,我不应该在意,无论使用哪一个,解决方案都应该可以工作。 –

+0

您应该阅读[XDocument](http://msdn.microsoft.com/en-us/library/system.xml.linq.xdocument.aspx)和[XElement](http://msdn.microsoft.com /en-us/library/system.xml.linq.xelement.aspx) – Jonesopolis

回答

3

首先,你有你的XML加载到内存为XDocument实例:

var doc = XDocument.Load(yourFilePath); 

然后,你可以回答你的问题:

1:我怎样才能确保该XML确实包含一个空的 TheData元素?

var theData = doc.Root.Element("TheData"); 

if(theData != null && string.IsNullOrEmpty((string)theData)) 
{ 
    // document contains TheData element which is empty 
} 

2:我怎样才能插入另一个XML字符串,HTML编码TheData

theData.Value = @"<mydata> 
         <name>John</name> 
         <address>New York City</address> 
        </mydata>"; 

你不必在这里操心XML编码。 XElement班会照顾到这一点。

+0

我想你的意思是'!string.IsNullOrEmpty(theData.Value)'或'theData == null' – user1477388

+0

你打我吧 – valverij

+0

@ user1477388他'theData.Value'是空的,所以我认为我的情况是正确的。 – MarcinJuraszek