2010-06-22 4 views
3

구성에 액세스하기 위해 개발중인 애플리케이션에 기능을 추가하고 싶습니다. 응용 프로그램은 기본적으로 app.config 파일에서 내가 지정한 섹션을 검색합니다.XML에서 사용자 정의 섹션로드하기

SectionType, SectionName, SectionData 

SectionData 열은 데이터를 포함하는 텍스트 열 수 있습니다 : 그것은이의 app.config에서 발견되지 않은 경우 , 그것은 다음과 같은 열이 특정 테이블에서 DB에서 찾는다 XML 형식의 섹션 (정확하게 app.config 파일에 있어야 함) SectionData 콘텐츠를 가져올 수는 있지만 앱에있는 경우처럼 사용자 지정 ConfigurationSection에로드 할 수 없습니다. .config 파일 :

var mySectionObj = ConfigurationManager.GetSection("myCustomSection"); 

단순화하기 위해 제 질문은 실제로 사용자 정의 Conf 구성 파일 대신 XML 문자열의 igurationSection 객체?

+0

가능한 [App.config C#의 사용자 지정 구성 섹션] (http://stackoverflow.com/questions/12877484/custom-config-section-in-app-config-c-sharp) – IAbstract

+0

중복 가능성이있는 복제본 : http://stackoverflow.com/questions/2718095/custom-app-config-section-with-a-simple-list-of-add-elements http://stackoverflow.com/questions/4436308/app-config- 사용자 정의 구성 섹션 문제 – IAbstract

답변

0

문자열을 XDocument 개체에로드하고 거기에서 읽을 수 있습니다.

-1

.NET의 ConfigurationManager 클래스를 사용하면 모든 파일을 열 수 없다는 것을 알 수 있습니다. app.config 파일로 제한됩니다. 파일이 아닌 다른 소스에서 구성 데이터를 읽는 중입니까? 안돼.

"XmlDocument.LoadXml (string)"을 사용하여 XML 문자열을 직접 분석하거나 app.config 파일을 수정하여 다시 읽을 수 있습니다.

질문 : 구성 파일에 CustomSection이없는 이유는 무엇입니까? 이 오류를 고려해야한다 (구성 파일을 업데이트하는 것이 가장 좋을 것이라고 생각합니다). 또는 일부 설정 파일에 CustomSection이 없다는 것을 의미합니까? 이 바람직하지 않은 경우

XmlDocument appconfig = new XmlDocument(); 

appconfig.Load("[config_filename]"); 
XmlNode root = appconfig.DocumentElement; 

XmlDocument mysection = new XmlDocument(); 
mysection.LoadXml([SectionData]); 
XmlNode customSection = mysection.DocumentElement; 

XmlNode tempNode = appconfig.ImportNode(customSection, true); 
root.AppendChild(tempNode); 

appconfig.Save("[config_filename]"); 

... 

var mySectionObj = ConfigurationManager.GetSection("myCustomSection"); 

, 나는 두 가지 가능성을 참조하십시오 :이 같은 것 파일에 설정을 추가

설정이 XML 파일에있을 수있는 경우

, 첫째 : 그것을 할 그럼에도 불구하고 .config 파일을 변경하고 읽은 다음 다시 변경하십시오. (또는 파일을 복사하고, 원본을 변경하고, 읽고, 삭제하고, 복사본의 이름을 원래 이름으로 다시 변경하십시오.) 이 방법은 좋지 않습니다. 내 의견으로는 다소 불투명하지만 몇 가지 큰 이점이 있습니다. 작동하고 유지하기가 쉽습니다.

둘째 : 을 XmlDocument로 XML 문자열을로드 : XmlDocument.LoadXml (xmlString을)를 그런 다음 "doc.ChildNodes"또는 "doc.SelectNodes (XPath는)"또는 "doc.SelectSingleNode (XPath는)과 함께이 XMLDocument 분석 ". 이것은 특히 프로젝트에 구성 설정을 가져 오는 루틴을 유지해야하므로이 방법을 권장하지 않으므로 훨씬 더 많은 작업이 필요합니다. 강력하게 추천하지 않습니다.

+0

1) 쉽게 수행 할 수 있습니다 (가능한 속임수 참조). 2)'XDocument'는'XmlDocument'보다 Linq2Xml을 사용하는 것이 더 좋습니다 – IAbstract

관련 문제