我有一個xml字符串保存在我試圖解析的遺留數據庫中。我可以得到字符串,但有2個問題獲取我需要的值。首先,一些示例xml。如何訪問子元素xml?
<?xml version="1.0" encoding="utf-16"?>
<email>
<meta>
<smartForm>
<unit name="ForgotUsername" label="Forgot Username Email">
<textBox name="FromEmail" label="From Email" type="Email" />
<textBox name="FromName" label="From Name" type="100" />
<textBox name="BccEmail" label="BCC" type="EmailList" />
<textBox name="Subject" label="Subject" type="300" />
<textBox2 name="TextBody" label="Body" type="Memo" />
</unit>
<unit name="ForgotPassword" label="Forgot Password Email">
<textBox name="FromEmail" label="From Email" type="Email" />
<textBox name="FromName" label="From Name" type="100" />
<textBox name="BccEmail" label="BCC" type="EmailList" />
<textBox name="Subject" label="Subject" type="300" />
<textBox2 name="TextBody" label="Body" type="Memo" />
</unit>
</smartForm>
</meta>
<value><?xml version="1.0" encoding="utf-16"?><root><ForgotPassword BccEmail="[email protected]" FromEmail="[email protected]" FromName="password test" Subject="password test" TextBody="info" /><ForgotUsername BccEmail="[email protected]" FromEmail="[email protected]" FromName="test" Subject="test" TextBody="test" /></root></value>
</email>
問題#1 - 我試圖使用XElement.Parse("string")
然而解析XML,我不能得到<value>
節點除非刪除了XML聲明(即前39個字符)。我希望不必這樣做,因爲這是一個脆弱的解決方案。
問題#2 - 一旦我有<value>
元素的內容,並解析成一個的XElement,我希望查詢要麼<root>
文檔元素的<ForgotUsername>
或<ForgotPassword>
子節點。當我得到.Elements()
時,我被告知集合爲空。
我在做什麼錯?
價值的XML實體替換後:
<root>
<ForgotPassword BccEmail="[email protected]" FromEmail="[email protected]" FromName="password test" Subject="password test" TextBody="info" />
<ForgotUsername BccEmail="[email protected]" FromEmail="[email protected]" FromName="test" Subject="test" TextBody="test" />
</root>
更新: 試圖abatishchev的初步建議後 - 我改變了問題#1的代碼如下:
var xdoc = XDocument.Parse(contentXml);
return (from element in xdoc.Elements("value")
select element.Value).FirstOrDefault();
根據提供的信息,它應該返回值節點中的字符串;但是,它返回null。 xdoc.Elements()(或者如上面的代碼片段所示)返回null。
您是否嘗試過的'XDocument.Parse()''而不是XElement.Parse()'? – dahlbyk 2011-04-25 21:27:20
對兩者都嘗試了同樣的結果。 – JamesEggers 2011-04-25 21:27:57