포함 된 XML 파일 읽기 C #
포함 된 XML 파일 (AC # 프로젝트의 일부인 XML 파일)에서 어떻게 읽을 수 있습니까? 프로젝트에 XML 파일을 추가했고 그 파일을 읽고 싶습니다. 사용자가 볼 수있는 리소스가되는 것을 원하지 않기 때문에 XML 파일이 프로젝트와 함께 컴파일되기를 원합니다.
어떤 생각?
XML 파일이 .csproj 프로젝트의 일부인지 확인하십시오. (솔루션 탐색기에서 볼 수 있으면 좋습니다.)
XML 파일의 "Build Action"속성을 "Embedded Resource"로 설정합니다.
다음 코드를 사용하여 런타임에 파일 내용을 검색합니다.
public string GetResourceTextFile(string filename) { string result = string.Empty; using (Stream stream = this.GetType().Assembly. GetManifestResourceStream("assembly.folder."+filename)) { using (StreamReader sr = new StreamReader(stream)) { result = sr.ReadToEnd(); } } return result; }
파일 내용을 읽고 싶을 때마다
string fileContents = GetResourceTextFile("myXmlDoc.xml");
"assembly.folder"는 리소스 파일이 포함 된 프로젝트 이름 및 폴더로 대체되어야합니다.
최신 정보
실제로 assembly.folder
XML 파일과 동일한 폴더에 생성 된 클래스가 기본적으로 갖는 네임 스페이스로 대체되어야합니다. 이것은 일반적으로 defaultNamespace.folder0.folder1.folder2.....
입니다.
또한 XML 파일을 리소스로 추가 한 다음 Resources.YourXMLFilesResourceName
(문자열, 즉 StringReader를 사용하여) 내용을 지정할 수 있습니다 .
Build Action을 Embedded Resource로 설정 한 후 다음을 작성합니다.
using (Stream stream = typeof(MyClass).Assembly.GetManifestResourceStream("MyNameSpace.Something.xml")) {
//Read the stream
}
Reflector ( http://www.red-gate.com/products/reflector/ 에서 무료 )를 사용하여 포함 된 XML 파일의 경로를 찾을 수 있습니다.
그렇다면 그것은 단지 문제입니다
Assembly a = typeof(Assembly.Namespace.Class).Assembly;
Stream s = a.GetManifestResourceStream("Assembly.Namespace.Path.To.File.xml");
XmlDocument mappingFile = new XmlDocument();
mappingFile.Load(s);
s.Close();
- 프로젝트에 파일을 추가하십시오.
- "Build Action"속성을 "Embedded Resource"로 설정합니다.
이 방법으로 액세스하십시오.
GetType().Module.Assembly.GetManifestResourceStream("namespace.folder.file.ext")
리소스 이름 문자열은 확장을 포함하여 프로젝트의 기본 네임 스페이스가 앞에 오는 파일 이름입니다. 리소스가 폴더 안에 있으면 문자열에도 포함해야합니다.
( http://www.dotnet247.com/247reference/msgs/1/5704.aspx 에서 왔지만 비정상적으로 사용했습니다)
@ 3Dave가 정말 도움이되었지만 (승선 투표), 내 리소스 도우미가 다른 어셈블리에 있었으므로 아래 작업을 수행했습니다.
public string GetResourceFileText(string filename, string assemblyName)
{
string result = string.Empty;
using (Stream stream =
System.Reflection.Assembly.Load(assemblyName).GetManifestResourceStream($"{assemblyName}.{filename}"))
{
using (StreamReader sr = new StreamReader(stream))
{
result = sr.ReadToEnd();
}
}
return result;
}
호출자
GetResourceFileText("YourFileNameHere.ext", Assembly.GetExecutingAssembly().GetName().Name);
참고 URL : https://stackoverflow.com/questions/2820384/reading-embedded-xml-file-c-sharp
'developer tip' 카테고리의 다른 글
템플릿 제약 C ++ (0) | 2020.12.03 |
---|---|
dict ()와 {}의 차이점은 무엇입니까? (0) | 2020.12.03 |
XAMPP Control Panel v3.2.1에서 VMware 포트 오류 443을 중지하는 방법 (0) | 2020.12.02 |
JavaScript에서 페이지로드 시간 계산 (0) | 2020.12.02 |
숭고한 텍스트를 사용하여 각 줄에 쉼표 추가 2 (0) | 2020.12.02 |