경로의 XML 잘못된 문자
SOAP 기반 서비스를 쿼리하고 있지만 데이터를 쿼리하기 위해 XML을 XDoc에로드하려고 할 때 반환 된 XML을 분석하고 싶습니다. '경로에 잘못된 문자'오류 메시지가 표시됩니까? 이것은 (아래) 서비스에서 반환 된 XML입니다. 단순히 대회 목록을 가져 와서 내가 설정 한 목록에 넣고 싶습니다. XML은 XML 문서로로드되지만 올바른 형식이어야합니까?.
이를 수행하고 오류를 해결하는 가장 좋은 방법에 대한 조언을 주시면 대단히 감사하겠습니다.
<?xml version="1.0" ?>
- <gsmrs version="2.0" sport="soccer" lang="en" last_generated="2010-08-27 20:40:05">
- <method method_id="3" name="get_competitions">
<parameter name="area_id" value="1" />
<parameter name="authorized" value="yes" />
<parameter name="lang" value="en" />
</method>
<competition competition_id="11" name="2. Bundesliga" soccertype="default" teamtype="default" display_order="20" type="club" area_id="80" last_updated="2010-08-27 19:53:14" area_name="Germany" countrycode="DEU" />
</gsmrs>
다음은 내 코드입니다. XDoc에서 데이터를 쿼리 할 수 있어야합니다.
string theXml = myGSM.get_competitions("", "", 1, "en", "yes");
XmlDocument myDoc = new XmlDocument();
MyDoc.LoadXml(theXml);
XDocument xDoc = XDocument.Load(myDoc.InnerXml);
소스 코드를 표시하지 않지만 수행중인 작업은 다음과 같습니다.
string xml = ... retrieve ...;
XmlDocument doc = new XmlDocument();
doc.Load(xml); // error thrown here
이 Load메서드는 XML 자체가 아닌 파일 이름을 예상 합니다. 실제 XML을로드하려면 다음 LoadXml방법을 사용하십시오 .
... same code ...
doc.LoadXml(xml);
마찬가지로 메서드를 사용 XDocument하면 실제 XML이 아닌 파일 이름 이 필요합니다. 그러나 메서드가 없으므로 문자열에서 XML을로드하는 올바른 방법은 다음과 같습니다.Load(string)LoadXml
string xml = ... retrieve ...;
XDocument doc;
using (StringReader s = new StringReader(xml))
{
doc = XDocument.Load(s);
}
사실 무엇이든 개발할 때 매개 변수의 유형뿐만 아니라 의미론 (의미)에도 주의를 기울이는 것이 좋습니다 . 매개 변수의 유형이 a string라고해서 문자열 인 모든 것을 공급할 수 있다는 의미는 아닙니다.
또한 업데이트 된 질문 XmlDocument과 관련 XDocument하여 동시에 사용하는 것은 의미가 없습니다 . 둘 중 하나를 선택하십시오.
Ondrej Tucny의 답변에 대한 후속 조치 :
대신 xml 문자열을 사용하려면 XElement를 사용하고 "parse"메서드를 호출 할 수 있습니다. (당신의 필요에 따라 XElement와 XDocument가 당신의 필요를 충족시킬 것입니다)
예를 들면;
string theXML = '... get something xml-ish...';
XElement xEle = XElement.Parse(theXML);
// do something with your XElement
XElement의 Parse 메서드를 사용하면 XML 문자열을 전달할 수 있지만 Load 메서드에는 파일 이름이 필요합니다.
이것이 실제로 출력이라면 마이너스 문자 ( '-')로 인해 잘못된 XML입니다. IE와 같은 브라우저에서 잘라내어 붙여 넣은 것 같습니다. 브라우저가 아닌 텍스트 편집기에서 정확한 XML을 표시해야합니다.
왜 안돼
XDocument.Parse(theXml);
이것이 올바른 해결책이라고 가정합니다.
참고 URL : https://stackoverflow.com/questions/4057938/xml-illegal-characters-in-path
'program story' 카테고리의 다른 글
| 사용자가 Google recaptcha에서 확인란을 선택한 js를 확인하는 방법은 무엇입니까? (0) | 2020.11.06 |
|---|---|
| jQuery는 모든 텍스트 필드의 값 합계를 계산합니다. (0) | 2020.11.06 |
| 기존 모델의 변경 사항을 반영하도록 django 데이터베이스 업데이트 (0) | 2020.11.06 |
| 파일 압축 해제 (0) | 2020.11.05 |
| Windows의 Git : crlf 설정은 무엇을 의미합니까? (0) | 2020.11.05 |