2011-04-21 10 views
42

나는 다음과 같은 XML 문서가 : 나는 C#을 통해 액세스 할 때데이터가 잘못

<?xml version="1.0" encoding="UTF-8"?> 
<Offices id="0" enabled="false"> 
    <office /> 
</Offices> 

을 :

Data at the root level is invalid. Line 1, position 1.

:

XmlDocument doc = new XmlDocument(); 
doc.LoadXml(HttpContext.Current.Server.MapPath("officeList.xml")); 

나는이 오류

이 줄에 문제가 있습니까?

+0

참고 :이 질문은 제가 방금 복사 한 것으로 닫은 질문보다 오래되었지만 나중에 질문하는 것이 더 중요합니다. 특히 'HttpContext'를 사용하여 문제를 해결하지 않습니다. –

+0

Visual Studio의 resx 파일에서이 오류가 방금 발생했으며 Visual Studio를 닫은 다음 다시 열면 해결됩니다. – jag

답변

86

이 :

doc.LoadXml(HttpContext.Current.Server.MapPath("officeList.xml")); 

가 있어야한다 :

doc.Load(HttpContext.Current.Server.MapPath("officeList.xml")); 

LoadXml()는 XML 문자열이 아닌 파일 이름을로드하기위한 것입니다. 기록을 위해

11

:

"루트 수준에서 데이터가 잘못"XML 문서없는 무언가를 구문 분석하려고 시도한 것을 의미한다. 도 시작하여을 XML 문서처럼 보이게 만들지 않습니다. 그것은 보통 당신이 발견 한 것을 의미합니다. "C : \ inetpub \ wwwroot \ mysite \ officelist.xml"과 같은 문자열을 파싱합니다.

+0

... 또는 xml 문서 사양 줄 으로 시작하는 항목은 xml 문서와 비슷하지만 XmlDocument.LoadXml()에 대해서는 보이지 않습니다. Joseph Morgan이 언급 한 내용을 참조하십시오. – Roland

+0

이 문제를 해결하는 데 도움이됩니다. – GvSharma

0

첫 번째 줄에는 xml 문서 사양이 사용 된 것으로 나타났습니다. 나는 this blog entry에있어 스타일 시트를 사용하고, 첫 번째 줄은 오류를 일으키는

<?xmlversion="1.0"encoding="utf-8"?> 

했다. 해당 줄을 제거했을 때 스타일 시트가 줄 시작으로 변경되었습니다.

<xsl:stylesheet version="1.0" xmlns:DTS="www.microsoft.com/SqlServer/Dts" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 

변환이 작동했습니다. 그런데이 블로그 게시물은 SSIS 패키지의 XML 정의에서 정보를 얻으려는 시도에서 찾은 첫 번째 좋은 예를 따르기 쉽지만 SSIS 2008의 예에서 경로를 수정해야했습니다. 패키지가 필요합니다. 또한 선행 제약 조건에서 "흐름"을 추출하는 버전을 만들었습니다.

<xsl:stylesheet version="1.0" xmlns:DTS="www.microsoft.com/SqlServer/Dts" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
    <xsl:output method="text" encoding="utf-8" /> 
    <xsl:template match="/"> 
    <xsl:text>From,To~</xsl:text> 
    <xsl:text> 
</xsl:text> 
    <xsl:for-each select="//DTS:PrecedenceConstraints/DTS:PrecedenceConstraint"> 
     <xsl:value-of select="@DTS:From"/> 
     <xsl:text>,</xsl:text> 
     <xsl:value-of select="@DTS:To"/> 
     <xsl:text>~</xsl:text> 
     <xsl:text> 
</xsl:text> 
    </xsl:for-each> 
    </xsl:template> 
</xsl:stylesheet> 

을 내 줄 구분 기호로 물결표 나에게 CSV를했다 : 내 마지막 하나는 다음과 같습니다. 필자는 필자의 텍스트 편집기에서 줄 바꿈으로 대체 한 다음 Excel로 가져와 패키지의 데이터 흐름을 살펴 보았습니다.

+1

이것은 실제로 질문에 대답하지 않습니다. –

+0

+1은 XmlDocument.LoadXml()에 대한 doc spec 행의 문제를 언급합니다. 내 문제는 동일한 질문을 제외하고 동일한 LoadXml() 호출로 해결되었으며 현재 해결되었습니다. – Roland