0

Webサービス呼び出しから受け取ったXMlドキュメントを文字列に解析しようとしています。

String content = ...;//long xml document
using(TextReader reader = new StringReader(content))
using(XmlReader xml_reader = XmlReader.Create(reader, settings))
{
    XML = new XPathDocument(xml_reader);
}

ただし、例外が発生します:

An error occurred while parsing EntityName. Line 1, position 1721.

その文字の周りのドキュメントを調べたところ、ランダムなタグの真ん中にありましたが、約20〜30文字前に、エスケープされていないアンパサンド(&文字)があることに気づいたので、それが問題だと思います。

ランニング:

content.Substring(1700, 100);//results in the following text
"alue>1 time per day& with^honey~&water\\\\</Value></Frequency></Direction>          </Directions>     "
                    ^unescaped & char 1721 is the 'w'

このドキュメントをxmlとして正常に読み取るにはどうすればよいですか?

4

1 に答える 1

1

あなたのxmlエンコーディングが彼らのものと一致することを確認してください(ドキュメントの上部、のようなもの<?xml version="1.0" encoding="ISO-8859-9"?>)。webserviceEncoding以下の値を webservice xml ドキュメントの値に置き換えます。

using(XmlReader r = XmlReader.Create(new StreamReader(fileName, Encoding.GetEncoding(webserviceEncoding)))) {
    XML = new XPathDocument( r );
    // ... 
}

それがうまくいかない場合

  1. xml パーサーにロードする前に、文字列に置き換えます。
  2. Web サービス ベンダーに通知する
于 2010-08-04T20:04:02.947 に答える