2013-05-16 2 views
1

Я новичок в asp.net. У меня есть файл XML следующим образом:Извлечение данных XML, их изменение и сохранение в файле excel

<?xml version="1.0" encoding="iso-8859-1" ?> 
<newsitem itemid="10000" id="root" date="1996-08-22" xml:lang="en"> 
    <title>CHINA: China says hopeful on global nuclear test ban.</title> 
    <headline>China says hopeful on global nuclear test ban.</headline> 
    <dateline>BEIJING 1996-08-22</dateline> 
    <text> 
    <p>China said on Thursday it was hopeful a global nuclear test ban treaty could be approved by the U.N. </p> 
    <p>&quot;China hopes that the treaty could be open for signature by the end of the year and that there .</p> 
    </text> 
.....continue 

файл XML огромен, я хочу that..i должен обрабатывать только термины в и <текст> поля каждого элемента новостей. Кроме того, я должен учитывать частоту этих слов.</p>

Я попытался извлечь текст из заголовка и текстового поля. Я получил данные для поля заголовка, но не получал текстовое поле. Более того, в поле заголовка я не получаю уникальных элементов, элементы повторяются. Пожалуйста, помогите мне.

Код я попытался это:

string filename = Server.MapPath("demo1.xml"); 
     XmlTextReader reader = new XmlTextReader(filename); 
     XmlNodeType type; 

     while (reader.Read()) 
     { 
      type = reader.NodeType; 

      if (type == XmlNodeType.Element) 
      { 
       if (reader.Name == "text") 
       { 
        reader.Read(); 
        TextBox1.Text = reader.Value; 
       } 

       if (reader.Name == "title") 
       { 
        reader.Read(); 
        ListBox1.Items.Add(reader.Value); 

       } 

      } 
     } 
     reader.Close(); 
    } 

В ListBox, я получаю данные, но в текстовом поле я не получаю данные. Кроме того, мне нужно хранить огромные данные xml и подсчитывать количество каждого слова. например, фарфор-2, говорит-1 и сохраняет его в превосходном состоянии. Не могли бы вы сказать мне, должен ли я использовать построитель строк, и если да, то как?

+0

Для этого используйте 'XDocument' и LINQ to XML. Это сделает вашу жизнь намного проще. – Yuck

+0

@Yuck Я понятия не имею о LINQ ,, – user2387900

ответ

0

Это поможет вам начать:

var xml = XElement.Load(new FileStream(@"C:\TEMP\TEST.xml", FileMode.Open)); 

var titleElement = xml.Elements("title").SingleOrDefault(); 
var title = titleElement != null ? titleElement.Value : String.Empty; 
var textElement = xml.Elements("text").SingleOrDefault(); 
var text = textElement != null 
       ? String.Join(String.Empty, textElement.Elements() 
                 .Select(t => t.Value)) 
       : String.Empty; 

Я использую свой выше XML фрагмент кода в качестве примера. Вы захотите адаптировать его к своей окончательной структуре XML, но я думаю, что с приведенным выше шаблоном вы должны быть в состоянии удовлетворить его требованиям.

Переменная title будет текст <title> элемента и переменная text будет каскадным текстом всех элементов, найденных в пределах <text> элемента. Таким образом, вы получаете переменные String, которые вы можете выполнять стандартную обработку текста для достижения своей цели получения подсчета слов и т. Д.

Надеюсь, это поможет!