我是 XML 和 Linq 的新手,正在嘗試將 XML 檔案的內容讀入串列。但是,該檔案沒有拆分為我在網上看到很多示例的節點,它們都是獨立的元素 - 請參見下面的示例。
<ProductProfile>
<Version>1.3</Version>
<ProductInfo>
<PartNum>3354</PartNum>
<Rev>343</Rev>
<serialNum>2323</serialNum>
<RevLevel>23243</RevLevel>
<Products>8258</Products>
<Description>8258 long</Description>
</ProductInfo>
<Customer>
<Name>qwerty</Name>
</Customer><ProductProfile/>
下面的代碼回傳內容,但它們都作為一個字串而不是單獨的專案添加到串列中。有什么方法可以將它們分開,還是我應該使用不同的方式來讀取檔案?
string pathfile = @"C:\filename";
XPathDocument doc = new XPathDocument(pathfile);
XPathNavigator nav = doc.CreateNavigator();
// Compile a standard XPath expression
XPathExpression expr;
expr = nav.Compile("//");
XPathNodeIterator iterator = nav.Select(expr);
// Method to clear WPF textboxes
loadClearGenerator();
List<string> elementContents = new List<string>();
try
{
while (iterator.MoveNext())
{
XPathNavigator nav2 = iterator.Current.Clone();
elementContents.Add(nav2.Value.ToString());
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
uj5u.com熱心網友回復:
假設您只是想獲取串列中的所有非空白文本節點值,我將只使用 LINQ to XML 而不是 XPath。這是一個完整的程式:
using System.Xml.Linq;
var doc = XDocument.Load("Test.xml");
var textNodeValues = doc
.DescendantNodes()
.OfType<XText>()
.Select(text => text.Value)
.Where(text => !string.IsNullOrWhiteSpace(text))
.ToList();
foreach (string value in textNodeValues)
{
Console.WriteLine(value);
}
使用您的示例 XML 輸出(修改為有效的 XML):
1.3
3354
343
2323
23243
8258
8258 long
qwerty
在這種情況下,您甚至不需要.Where(text => !string.IsNullOrWhiteSpace(text))呼叫 - 這只是意味著如果您加載了一個保留可忽略空格的檔案,它會在構建串列時忽略這些節點。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/464278.html
上一篇:如果提示為空,如何停止js腳本
