2017-07-14 67 views
0

我從C#控制檯的許多源中讀取多個進料,和我有這個代碼,我加載XML來源:如何獲得外殼網址的XElement C#控制檯

XmlDocument doc = new XmlDocument(); 
doc.Load(sourceURLX); 
XElement xdoc = XElement.Load(sourceURLX); 

如何獲得外殼網址並顯示爲變量?

+1

你能否澄清的問題? 「機箱網址」是什麼意思?如果合適,您的XML樣本可能也會有用於包含在問題中。 –

+0

我讀的飼料,然後我把價值觀,並把數據庫作爲字符串,現在我需要閱讀圍欄文章圖像將網址映射到表中。因爲在控制檯中,我讀取提要並以字符串形式添加數據庫。標題,描述,網址對文章和文章圖片。現在我的問題只是從機箱標籤URL作爲字符串,maby作爲SElement可能或其他想法。 Maby現在您可以清楚地瞭解我的問題 –

+0

'xDoc.Element(「item」)。Element(「enclosure」)。Attribute(「url」)。Value' – Fabio

回答

0

如果我正確理解你的問題(我在這裏做一個大的假設) - 你想從根(或'封閉')標籤,名爲'網址'選擇一個屬性?

您可以在這裏使用XPath查詢。考慮下面的XML:

<?xml version="1.0" encoding="utf-8"?> 
<root url='google.com'> 
    <inner /> 
</root> 

您可以使用下面的代碼來檢索 'google.com':

String query = "/root[1]/@url"; 
XmlDocument doc = new XmlDocument(); 
doc.Load(sourceURLX); 
String value = doc.SelectSingleNode(query).InnerText; 

的XPath語法的更多信息,可以發現here

編輯

/item[1]/enclosure[1]/@url 
+0

_I'm在這裏做一個大的假設 - 爲什麼不要求OP澄清之前?;) – Fabio

+0

如果它不合適,我會刪除答案:) –

+0

謝謝,我是編程新手,我的英語不太好。但是,謝謝。我試着用你的答案嘗試,但沒有標籤,因爲在XML Feed中有外殼,因爲外殼標籤包含項目標籤,因爲此 etc

0

<item> 
    <description> 
    </description> 
    <enclosure url="blablabla.com/img.jpg" /> 
</item> 

因此,您可以使用下面的XPath查詢檢索的網址:正如您在您的評論說,你可以利用下面的XML工作像下面的xml

<?xml version="1.0" encoding="UTF-8"?> 
    <rss version="2.0"> 
     <channel> 
      <title>title</title> 
      <link>https://www.link.com</link> 
      <description>description</description> 
      <item> 
       <title>RSS</title> 
       <link>https://www.link.com/xml/xml_rss.asp</link> 
       <description>description</description> 
       <enclosure url="https://www.link.com/media/test.wmv" 
          length="10000" 
          type="video/wmv"/> 
      </item> 
     </channel> 
    </rss> 

你會得到url通過讀取屬性

var document = XDocument.Load(sourceURLX); 
var url = document.Root 
        .Element("channel") 
        .Element("item") 
        .Element("enclosure") 
        .Attribute("url") 
        .Value; 

要獲得多個URL

var urls = document.Descendants("item") 
        .Select(item => item.Element("enclosure").Attribute("url").Value) 
        .ToList(); 

使用foreach

foreach (var item in document.Descendants("item")) 
{ 
    var title = item.Element("title").Value; 
    var link = item.Element("link").Value; 
    var description = item.Element("description").Value; 
    var url = item.Element("enclosure").Attribute("url").Value; 
    // save values to database 
} 
+0

這是可能的控制檯應用程序?我得到這個錯誤:'錯誤\t CS1061 \t'XmlDocument'沒有包含'Root'的定義,也沒有找到接受'XmlDocument'類型的第一個參數的擴展方法'Root'(你是否遺漏了using指令或者組裝參考?)' –

+0

是的,它會工作。使用'var document = XDocument.Load(sourceURLX)' – Fabio

+0

它可以工作,但對於所有10篇文章,我從firstone文章中獲得相同的圖像,我只獲得10次第一張圖像。 –