0

"\n" を子ノードとして読み取っている XML ドキュメントがあります。私はこれを使用してこれを削除しようとしています:

XmlReaderSettings.IgnoreWhiteSpace = True

また

XmlDocument.PreserveWhiteSpace = False

しかし、それは機能していません。body の後の childnode は、代わりに "\n " として読み取られ<C></C> ます コードのスニペットは次のとおりです。

Dim xrsSettings As New XmlReaderSettings()
xrsSettings.IgnoreComments = True

Dim xrReader As XmlReader = XmlReader.Create(context.Request.InputStream, xrsSettings)
Dim xdRequest As New XmlDocument()
xdRequest.Load(xrReader)

XML は次のとおりです。

<?xml version="1.0" encoding="utf-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
  <SOAP-ENV:Header>
    <wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" SOAP-ENV:mustUnderstand="1">
      <wsse:UsernameToken xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
        <wsse:Username>user</wsse:Username>
        <wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">pass</wsse:Password>
      </wsse:UsernameToken>
    </wsse:Security>
  </SOAP-ENV:Header>
  <SOAP-ENV:Body>
    <C xmlns="http://www.sdfsfsfs.com/3939" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" MessageContentCode="8" TimeStamp="2012-05-18T08:32:42" Version="6.000">
      <A HC="ABCD">
        <B CC="EUR" End="2012-06-30" IAI="false" IC="0" MC="P1" RPC="BAR" RPT="Overlay" Start="2012-05-18" YI="false">
          <RS>
            <R CC="EUR" ITC="DR">
              <BBGAS>
                <BBGA AQC="10" AAT="300" NOG="1" />
                <BBGA AQC="10" AAT="300" NOG="2" />
                <BBGA AQC="10" AAT="300" NOG="3" />
              </BBGAS>
            </R>
          </RS>
          <D N="Short">
            <T L="DE">BAR</T>
          </D>
        </B>
      </A>
    </C>
  </SOAP-ENV:Body></SOAP-ENV:Envelope>
4

1 に答える 1

0

この動作は正しいです。XML で DTD (doctype 宣言) が指定されていない場合、空白は無視できません。 解析モードと無視できる空白の詳細については、こちらをお読みください。

問題を解決するには DTD を導入する必要があるように思われるかもしれませんが、ここでは、きれいに印刷された XML を処理する際の標準的なアプローチである、より高いレベル (アプリケーションの後半) で空白をスキップできない理由に焦点を当てたいと思います。

于 2012-05-29T20:49:27.367 に答える