我想解析C#中網站的XML響應。響應的格式類似於以下內容:在C#XML中解析特定內容的XML
<Company>
<Owner>Bob</Owner>
<Contact>
<address> -1 Infinite Loop </address>
<phone>
<LandLine>(000) 555-5555</LandLine>
<Fax> (000) 555-5556 </Fax>
</phone>
<email> [email protected] </email>
</Contact>
</Company>
我想要的唯一信息是LandLine和傳真號碼。然而,我目前的做法似乎真的很差質量。本質上它是一堆嵌套的while循環,並檢查元素名稱,然後在找到正確的元素時讀取內容。我正在使用類似下面的清單:
XmlReader xml = XmlReader.Create(websiteResultStream, xmlSettings);
while(xml.Read()){
if(xml.NodeType == XmlNodeType.Element){
if(xml.Name.ToString() == "Phone"){
while(xml.Read()) {
if(xml.NodeType == XmlNodeType.Element) {
if(xml.Name.ToString() == "LandLine"){
xml.MoveToContent();
xml.ReadContentAsString();
}
if(xml.Name.ToString() == "Fax"){
xml.MoveToContent();
xml.ReadContentAsString();
}
}
}
}
}
}
我是較新的XML/C#,但上述方法只是尖叫壞代碼!我想確保如果結構發生變化(即,有另外的電話號碼類型,如「移動」),代碼是健壯的(因此,額外的while循環)
注意:上述C#代碼不準確,缺乏一些檢查等,但它展示了我目前令人厭惡的方法
如果簡單地從這兩個元素中提取內容,如果它們存在,最好/最乾淨的方法是什麼?
這有效,但對於只讀訪問不是最佳選擇。該示例使用'XmlDocument'在內存中構建完整的DOM樹,這通常不需要。 – 2010-08-18 14:57:13