我在c#中使用xmlreader解析xml字符串,但是當我解析時,我有時需要獲取節點的完整內容,包括帶標記的子節點,並且仍然能夠繼續解析。用xmlreader和C獲取字符串的孩子#
ReadInnerXML和ReadOutterXML分手了我的一切
例如XML:
<?xml version="1.0" standalone="yes"?>
<main>
<parse1> //finding this will get full inner or outter xml - either one - my issue
<parse2 /> // even getting the children above might still need parse chldren
<negligeable /> // not all children interest me
</parse1>
<parse3>some text</parse3> // not all children of main are the same but all need be parsed
</main>
希望這給你,我現在可以解析2和3的是什麼,我需要
總體思路和忽略我不需要的東西,但是如果我在使用ReadInnerXML或ReadOutterXML時發現標籤,那麼它不會讓我解析其他任何東西 - 甚至不在外面的標籤。
ReadInnerXML和ReadOutterXML做回我正常需要的文本,但導致一切不被解析
編輯:按dasblinkenlight sugestion,一些代碼:
using (XmlReader reader = XmlReader.Create(new StringReader(XmlString)))
{
while (reader.Read())
{
switch (reader.NodeType)
{
case XmlNodeType.Element:
switch (reader.Name)
{
case "parse1":
Console.WriteLine("Contents of Parse 1: {0}", ?function here?);
break;
case "parse2":
Console.WriteLine("Parse 2 tag exists");
break;
case "parse3":
Console.WriteLine("Contents of Parse 3: {0}", Reader.ReadElementContentAsString());
break;
}
break;
}
}
}
結果應該是(給予測試XML)
Contents of Parse 1: <parse2 /><negligeable />
Parse 2 tag exists
Contents of Parse 3: some text
我也試圖ReadSubTree
任何提示?
這是很難搞清楚是什麼問題,沒有看到你的代碼。你可以在你的問題中添加一些C#來說明問題嗎? – dasblinkenlight 2012-01-12 15:26:14
好的,但問題不在於代碼,但我問的是 - 基本上迭代兩次相同的節點 - 我將很快添加代碼示例 – 537mfb 2012-01-12 16:00:53
如果我正確理解你,'ReadSubtree'不會幫助,因爲它定位原讀者在它被調用的元素的末尾。它所做的只是提供一個「密封的」閱讀器,它只能看到這個元素。但我應該補充一點,我不太明白你想要做什麼。如果可能,請澄清你的問題。 – harpo 2012-01-12 16:13:22