簡體   English   中英

如何在XML消息中刪除XML中的<和>

[英]How to remove < and > in XMLthat is part of the XML message

我有如下所示的XML:

<StartTag>
    <MyValueTag>And the value itself contains a < bracket that makes the XML invalid</MyValueTag>
</StartTag>

XML包含使XML無效的'<'字符。

現在,最簡單的方法是修復XML的源,但是不幸的是,我無法控制XML的創建。 它有類似“小於10”的消息。

無論如何,有什么方法可以檢查XML這樣的東西並轉義那些字符嗎?

我嘗試在“看這篇文章”中看到那個人指示我們應該使用JTidy。 但是當我嘗試它時,它不會刪除<:

Tidy tidy = new Tidy();
tidy.setInputEncoding("UTF-8");
tidy.setOutputEncoding("UTF-8");
tidy.setWraplen(Integer.MAX_VALUE);
tidy.setPrintBodyOnly(true);
tidy.setXmlOut(true);
tidy.setSmartIndent(true);
ByteArrayInputStream inputStream = new ByteArrayInputStream(data.getBytes("UTF-8"));
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
tidy.parseDOM(inputStream, outputStream);

XML無效的事實意味着您將無法使用有效的XML解析器來讀取和修復它。 如果您找不到寫該文件的軟件的作者來修復該錯誤,那么您將不得不提出一些特定於應用程序的解決方案。

例如,如果您知道流浪<char僅出現在<MyValue>元素的文本中,並且如果您知道沒有其他元素可以作為<MyValue>子元素出現,那么編寫程序將很容易識別開始和結束標記,並用&#60;替換它們之間出現的所有<字符&#60;

當然,如果問題不是那么簡單,那么解決方案就不會那么簡單。 但是希望您可以使它比解決XML的一般問題更簡單。

在“手動”修復了幾個文件后,停下來問自己:“我怎么知道<char需要轉義?” 然后編寫一個基於相同知識運行的程序。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM