2013-01-24 79 views
2

獲取XML值我有以下字符串的XML可變想從字符串參數

<?xml version="1.0" encoding="UTF-8" standalone="yes"?> 
<person> 
    <first-name>RaJeEv(๏๏)</first-name> 
    <last-name>Diboliya</last-name> 
    <headline>Software Engineer at FASTTRACK INDIA.</headline> 
    <site-standard-profile-request> 
    <url>http://www.linkedin.com/profile?viewProfile=&amp;url> 
    </site-standard-profile-request> 
</person> 

現在我想從這個字符串得到的姓氏和名字。我怎樣才能做到這一點?

+0

你有什麼已經嘗試過,你認爲什麼樣的方法? –

+1

您使用xml閱讀器。 – Aristos

+1

我還沒有嘗試過任何東西,因爲我對此沒有任何想法。 – Diboliya

回答

2

例如

public class Program { 
    public static void Main(String[] args) { 
     XDocument xdoc = XDocument.Parse(@"<?xml version=""1.0"" encoding=""UTF-8""  standalone=""yes""?> 
<person> 
    <first-name>RaJeEv(๏๏)</first-name> 
    <last-name>Diboliya</last-name> 
    <headline>Software Engineer at FASTTRACK INDIA.</headline> 
    <site-standard-profile-request> 
    <url>http://www.linkedin.com/profile?viewProfile</url> 
    </site-standard-profile-request> 
</person>"); 

     XElement xe = xdoc.Elements("person").First(); 

     Console.WriteLine("{0} {1}", xe.Element("first-name").Value, xe.Element("last-name").Value); 
    }   
} 
+0

非常感謝,這個工作非常完美...... !!! – Diboliya

2

這是我怎麼會反序列化這一點 -

創建一個具體的領域類Person

[Serializable()] 
public class Person 
{ 
    [System.Xml.Serialization.XmlElementAttribute("first-name")] 
    public string FirstName{ get; set; } 

    [System.Xml.Serialization.XmlElementAttribute("last-name")] 
    public string LastName{ get; set; } 

    [System.Xml.Serialization.XmlElementAttribute("headline")] 
    public string Headline{ get; set; } 

    [System.Xml.Serialization.XmlElementAttribute("site-standard-profile-request")] 
    public string ProfileRequest{ get; set; } 
} 

使用的XmlSerializer將其轉換爲Person類型

XmlSerializer serializer = new XmlSerializer(typeof(Person)); 
var person = serializer.Deserialize(xml) as Person; 

的屬性就可以像

var firstName = person.FirstName; 
var lastName = person.LastName; 
+0

這個答案很好 –

0
var person = XElement.Parse(yourString).Element("person"); 
string firstName = person.Element("first-name").Value; 
string lastName = person.Element("last-name").Value; 
+0

你可以給你的代碼添加一些評論嗎?這對其他人更有意義。檢查這個[metaSO問題](http://meta.stackexchange.com/questions/7656/how-do-i-write-a-good-answer-to-a-question)和[Jon Skeet:Coding Blog]( http://msmvps.com/blogs/jon_skeet/archive/2009/02/17/answering-technical-questions-helpfully.aspx)如何給出正確的答案。 – Yaroslav

0

訪問這就是你尋找..

 XmlDocument xmldoc = new XmlDocument(); 
     XmlNodeList xmlnode; 
     FileStream fs = new FileStream(xmlFilePath, FileMode.Open, FileAccess.Read); 
     xmldoc.Load(fs); 

     xmlnode = xmldoc.GetElementsByTagName("first-name"); 
     string firstname= string.Empty; 
     if(xmlnode!=null) 
      strOption = Regex.Replace(xmlnode[0].InnerText, @"\t|\n|\r| ", ""); 

     xmlnode = xmldoc.GetElementsByTagName("last-name"); 
     string lastname= string.Empty; 
     if(xmlnode!=null) 
      strOption = Regex.Replace(xmlnode[0].InnerText, @"\t|\n|\r| ", ""); 

希望它能幫助:)

+0

沒有冒犯的意思,因爲沒問題,這是有效的,但是告訴某人,他正在嘗試理解如何從XML字符串中提取值以使用Regex,沒有任何附加價值。這是過於複雜的事情。 C#具有內置的方法來處理XPath並獲取XML節點的InnerText。 –

+0

@WimOmbelets:這不是太複雜,這是必要的,因爲如果你的xml具有像tab/new-line這樣的值用於查看目的,那麼你必須替換每個標籤,換行,修剪以獲得絕對字符串。而'正則表達式'可以更快地完成單個'string.Replace'和'Trim'。 – Avishek

+0

如果XML在其值中包含「演示文稿」字符,則可以追查是誰執行了此操作,並且[在此插入非常糟糕的juju] –