第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

c#從XML標簽中刪除(空)

c#從XML標簽中刪除(空)

C#
三國紛爭 2021-07-06 17:16:47
我需要找出一種使用 C# 解析 XML 文件的好方法(NULL),并將其從標簽中刪除,然后將其替換為單詞BAD.例如:<GC5_(NULL) DIRTY="False"></GC5_(NULL)>應該替換為<GC5_BAD DIRTY="False"></GC5_BAD>部分問題是我無法控制原始 XML,我只需要在收到它后修復它。第二個問題是(NULL)可以出現(xiàn)在零個、一個或多個標簽中。用戶是否填寫其他字段似乎是一個問題。所以我可能會得到<GC5_(NULL) DIRTY="False"></GC5_(NULL)>或者<MH_OTHSECTION_TXT_(NULL) DIRTY="False"></MH_OTHSECTION_TXT_(NULL)>或者<LCDATA_(NULL) DIRTY="False"></LCDATA_(NULL)>我是 C# 和編程的新手。編輯:所以我想出了以下功能,雖然不漂亮,但到目前為止工作。public static string CleanInvalidXmlChars(string fileText)    {        List<char> charsToSubstitute = new List<char>();        charsToSubstitute.Add((char)0x19);        charsToSubstitute.Add((char)0x1C);        charsToSubstitute.Add((char)0x1D);        foreach (char c in charsToSubstitute)            fileText = fileText.Replace(Convert.ToString(c), string.Empty);        StringBuilder b = new StringBuilder(fileText);        b.Replace("&#x0;", string.Empty);        b.Replace("&#x1C;", string.Empty);        b.Replace("<(null)", "<BAD");        b.Replace("(null)>", "BAD>");        Regex nullMatch = new Regex("<(.+?)_\\(NULL\\)(.+?)>");        String result = nullMatch.Replace(b.ToString(), "<$1_BAD$2>");        result = result.Replace("(NULL)", "BAD");        return result;    }我只能找到 6 或 7 個錯誤的 XML 文件來測試此代碼,但它對每個文件都有效,并且沒有刪除好的數(shù)據(jù)。我感謝您的反饋和您的時間。
查看完整描述

2 回答

?
夢里花落0921

TA貢獻1772條經(jīng)驗 獲得超6個贊

將此 XML 作為字符串讀取并執(zhí)行正則表達式替換是否適合您?喜歡:


Regex nullMatch = new Regex("<(.+?)_\\(NULL\\)(.+?)>");

String processedXmlString = nullMatch.Replace(originalXmlString, "<$1_BAD$2>");


查看完整回答
反對 回復 2021-07-17
?
肥皂起泡泡

TA貢獻1829條經(jīng)驗 獲得超6個贊

通常,正則表達式不是處理 XML 文件的正確方式。有一系列正確處理 XML 文件的解決方案 - 您可以繼續(xù)閱讀System.Xml.Linq以獲得良好的開端。如果你是一個新手,這當然是你應該在某個時候?qū)W習的東西。但是,正如 Ed Plunkett 在評論中指出的那樣,您的 XML 實際上并不是 XML:(并且)XML 元素名稱中不允許使用字符。


由于您必須將其作為對字符串的操作來執(zhí)行,因此要使用 Corak 的注釋


contentOfXml.Replace("(NULL)", "BAD");

可能是個好主意,但如果任何元素可以包含字符串(NULL)作為其名稱以外的任何內(nèi)容,則會中斷。


如果你想要一個正則表達式方法,這可能會很好地工作,但我不確定它是否沒有遺漏任何邊緣情況:


var regex = new Regex(@"(<\/?[^_]*_)\(NULL\)([^>]*>)");

var result = regex.Replace(contentOfXml, "$1BAD$2");


查看完整回答
反對 回復 2021-07-17
  • 2 回答
  • 0 關注
  • 298 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號