我目前正在從事一個專案,我必須在該專案中接收一個 XML 檔案并對其中一個元素進行排序。
在實際進入排序部分之前,我必須決議 XML 檔案,所以我使用XmlTextReader的是 ,它運行良好。但是,我需要將每個元素的屬性保存在變數或向量中,以便之后能夠執行排序(我的困難是嘗試存盤reader->Value.
這是我的代碼的一部分,有什么想法嗎?
PS你可以在下面的第二種switch情況下看到我的掙扎,我在所有這些嘗試中一直收到錯誤。
#include "pch.h"
#include <iostream>
#include <fstream>
#include <algorithm>
#include <vector>
#include <string>
#include <tchar.h>
#using <System.Windows.Forms.dll>
#using <mscorlib.dll>
using namespace std;
using namespace System;
using namespace System::Xml;
int main() {
string myText = "";
vector<string> entries = { "DeTal" };
entries.insert(entries.end(), "Fulano");//test purposes
XmlTextReader^ reader = gcnew XmlTextReader("C:\\Users...");
while (reader->Read())
{
switch (reader->NodeType)
{
case XmlNodeType::Element: // The node is an element.
Console::Write("<{0}", reader->ReadToFollowing("TITLE"));
while (reader->MoveToNextAttribute()) {// Read the attributes.
Console::Write(" {0}='{1}'", reader->GetAttribute("TITLE"));
}
Console::WriteLine(">");
break;
case XmlNodeType::Text: //Display the text in each element.
Console::WriteLine(reader->Value); //reads the actual element content
//entries.insert(entries.end(), reader->Value);
//entries.push_back(reader->Value);
//myText = Console::WriteLine(reader->Value);
//myText = Console::WriteLine(reader->ReadString());
//myText = reader->Value;
break;
case XmlNodeType::EndElement: //Display the end of the element.
Console::Write("</{0}", reader->Name);
Console::WriteLine(">");
break;
}
}
cout << "\nPress enter to start sort: ";
Console::ReadLine();
uj5u.com熱心網友回復:
reader->Value是一個 .NET System::String(一個 16 位 Unicode 字串)。
您正在嘗試將其分配給,并將其存盤在一個std::vector(std::string一個 8 位字串)中。
這兩種字串型別彼此不直接兼容,這就是您遇到麻煩的原因。
您需要:
將
myText變數更改為System::String,并將entries向量更改為保存System::String元素。將
System::String資料轉換為std::string. 如何做到這一點記錄在 MSDN:如何:將 System::String 轉換為標準字串。另請參閱如何將 System::String^ 轉換為 std::string?在 StackOverflow 上。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/490153.html
