2012-03-08 3 views
1

xmlwriterを使用してxmlファイルを作成していますが、うまく動作すると思っていましたが、bcozが失敗したときにbcozが失敗すると、多くの人が「SecurityElement.Escape」を使用するようにアドバイスしています。どうやってどこか分かりません。xmlファイルからこのSpl charecterを削除してください。xmlのspl文字を置き換える方法または取り除く方法

<?xml version="1.0" encoding="utf-8"?> 

上記シンボル

用のコードを見つけた場合、それは&#195;&#175;&#194;&#187;&#194;&#191;&#060;

マイコード

   XmlWriter xmlWrite; 
       XmlWriterSettings settings = new XmlWriterSettings(); 
       settings.OmitXmlDeclaration = true; 
       xmlWrite = XmlWriter.Create(@"c:\test.xml",settings); 
      xmlWrite.WriteStartElement("metadata"); 
      xmlWrite.WriteElementString("story", story); 
      xmlWrite.Close(); 

私は正常にバージョンを削除することができますが、それでもSPLの文字があるように見えます。今止まった。

助けが必要ですか?

午前APPEND iが "(C:\のtest.xml")@たTextWriter SWは=新しいのStreamWriterを()を使用して、" 使用した場合には、この私を助けるために回答がSPL文字を取り除くために

    XmlWriter xmlWrite; 
        XmlWriterSettings settings = new XmlWriterSettings(); 
        settings.Encoding = new UTF8Encoding(false);//Thanks to DaveE 
        settings.ConformanceLevel = ConformanceLevel.Fragment; 
        settings.OmitXmlDeclaration = true; 
        xmlWrite = XmlWriter.Create(@"c:\test.xml",settings); 

ですそれを動作するように

XmlDocument doc = new XmlDocument(); 
      doc.Load(@"C:\test.xml"); 
      XmlNode newChild = doc.CreateNode(XmlNodeType.Element, "image", null); 
      var attribute = doc.CreateAttribute("name"); 
      attribute.Value = nameOnly; 
      newChild.Attributes.Append(attribute); 
      XmlNode xmlElement = doc.CreateNode(XmlNodeType.Element, "width", null); 
      xmlElement.InnerText = widthValue[1].TrimStart(); 
      newChild.AppendChild(xmlElement); 
      using (TextWriter sw = new StreamWriter(@"C:\test.xml")) 
      { 
       doc.Save(sw); 

      } 

答えて

2

あなたが「それを検証しよう」と言ったら、どういう意味ですか? XMLバリデーターはBOMに何の問題もないはずです。 BOMをエスケープすると、無効なXMLが生成されます。

XMLWriterSettingsを作成するには、XMLWriterを作成し、必要な値を設定してからXMLWriterを作成するときに使用する必要があります。 XMLWriter.Settings は、読み取り専用です。

XmlWriterSettings settings = new XmlWriterSettings(); 
settings.ConformanceLevel = ConformanceLevel.Fragment; 
settings.OmitXmlDeclaration = true; 

writer = XmlWriter.Create("c:\test.xml", settings); 

通常のBOMのようには見えません。btw。いくつかのバイトは正しいですが、そこには迷惑メールがあります。システムにはどのようなコードページが設定されていますか?

EDIT:あなたのXMLWriterSettingsにエンコーディングを追加し、オブジェクト:

settings.Encoding = new UTF8Encoding(false);

'偽の' パラメータは、BOMを使用しないようにエンコーディングを伝えます。

+0

あなたのコメントのおかげで、私は "http://www.xmlvalidation.com/index.php?id=1&L=0"これを使用して私のXMLを検証し、バージョンの前にspl charを見つけましたので、私は省略しました設定をバージョンを削除するが、今でも私のルートノードの前にspl charです。 – Usher

+0

このツールは、ファイルにBOMが含まれている場合、* plain xmt text *は検証しますが、xml *ファイルの内容は検証しません。 – DaveE

+0

ファイルを開くために何を使用していますか?これは、ワープロではなく、メモ帳やメモ帳++などのプレーンテキストエディタでなければなりません。 – DaveE

0

まあ、それはあなたが行までxmlWriteを初期化しないため、読み取り専用あなたがnull参照の例外を取得したいしなかった場合でも先発、5。

  1. ライターを作成する(ヒント:5行目)
  2. 作成する必要がない設定を行います。 (ヒント:3行目と4行目)
  3. ???
  4. 利益。
+0

私の質問が更新されました。私は今バージョンを削除できますが、依然としてspl charがあります。 – Usher

関連する問題