Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > Transformer устанавливает лишний атрибут в тег xml


Автор: anti_snayper 7.7.2009, 17:45
Здравствуйте.
Есть файл настроек в фотмате xml. Он распарсивается, изменяется и посредством ниже приведенного кода записываетсыя обратно на диск. 
Код

import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
.....
Transformer transformer = TransformerFactory.newInstance().newTransformer();
StreamResult result = new StreamResult(new FileOutputStream(settingsFile));
    transformer.transform(new DOMSource(doc), result);

Проблема в том, что данный трансформер добавляет по умолчанию атрибут standalone="no" в тег xml.
Код

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
......

Из-за него утилита не востпринимает данный файл настроек. Кто-нибудь сталкивался с подобным? Поделитесь опытом...


Спасибо.

Автор: LSD 7.7.2009, 17:59
Дай пример который можно запустить.

Автор: anti_snayper 7.7.2009, 18:43
Код

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;

String settingsFile = "C:\settings.xml";
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
Document doc = builder.parse(settingsFile);

...... обработка значения не играет.........

Transformer transformer = TransformerFactory.newInstance().newTransformer();
StreamResult result = new StreamResult(new FileOutputStream(settingsFile));
    transformer.transform(new DOMSource(doc), result);


изначальный settings.xml:
Код

<?xml version="1.0" encoding="UTF-8"?>
<Settings>
   <PrintOptions>
      <IsoFontname keytype="string">Arial</IsoFontname>
      <WatermarkLineSpacing keytype="int">10</WatermarkLineSpacing>
      <CompatibilityPrinters keytype="string"></CompatibilityPrinters>
      <MinimumLineWeight keytype="real">0.005906</MinimumLineWeight>
      <ForceMonochrome keytype="bool">false</ForceMonochrome>
      <AllColorsBlack keytype="bool">false</AllColorsBlack>
      <OutlineHides keytype="bool">false</OutlineHides>
      <PrintRange keytype="int">1</PrintRange>
      <LineThicknessUnit keytype="int">0</LineThicknessUnit>
      <UnitType keytype="int">0</UnitType>
      <AutoRotate keytype="bool">true</AutoRotate>
      <PrintInsideBanners keytype="bool">false</PrintInsideBanners>
      <Changemarks keytype="bool">false</Changemarks>
      <ExportRedactionReasons keytype="bool">false</ExportRedactionReasons>
      <PersistSettings keytype="bool">false</PersistSettings>
   </PrintOptions>
   <RedlineOptions>
      <RedlineLinewidth keytype="real">0.3</RedlineLinewidth>
      <RedlineLinestyle keytype="string">SOLID</RedlineLinestyle>
      <RedlineColor keytype="string">255 0 255</RedlineColor>
      <RedlineSecondaryColor keytype="string">255 255 128</RedlineSecondaryColor>
      <RedlineDrawstyle keytype="string">HOLLOW</RedlineDrawstyle>
      <RedlineFontsize keytype="real">0.5</RedlineFontsize>
      <RedlineItalicText keytype="bool">false</RedlineItalicText>
      <RedlineBoldText keytype="bool">false</RedlineBoldText>
      <RedlineUnderlineText keytype="bool">false</RedlineUnderlineText>
      <RedlineOpaqueText keytype="string">TRANS</RedlineOpaqueText>
      <RedlineFontname keytype="string">Arial</RedlineFontname>
      <RedlineBlockoutColor keytype="string">0 0 0</RedlineBlockoutColor>
   </RedlineOptions>
   <DisplayOptions>
      <BackgroundColor keytype="int">0</BackgroundColor>
      <BorderBackgroundColor keytype="int">0</BorderBackgroundColor>
      <ThumbnailDisplayOnFileLoad keytype="bool">false</ThumbnailDisplayOnFileLoad>
      <ThumbnailSize keytype="int">100</ThumbnailSize>
      <AllowAnimate keytype="bool">true</AllowAnimate>
      <EnableGdiplus keytype="bool">true</EnableGdiplus>
      <ThinLinesOnly keytype="bool">false</ThinLinesOnly>
      <AnimateSpeed keytype="int">500</AnimateSpeed>
      <QuickRedrawQuitTime keytype="int">100</QuickRedrawQuitTime>
      <AlwaysGdiplus keytype="bool">false</AlwaysGdiplus>
      <AllowQuickRedraw keytype="bool">true</AllowQuickRedraw>
   </DisplayOptions>
   <MeasurementOptions>
      <MeasurementSystem keytype="int">0</MeasurementSystem>
      <MeasurementPrecision keytype="int">4</MeasurementPrecision>
      <MeasurementUnit keytype="string">in</MeasurementUnit>
   </MeasurementOptions>
   <MruListing>
      <MruMrkRasterFilenames keytype="string"></MruMrkRasterFilenames>
      <MruMrkStampFilenames keytype="string">C:\111.xsp|C:\222.xsp|</MruMrkStampFilenames>
   </MruListing>
   <GeneralOptions>
      <UnloadPageFreememThreshold keytype="real">0.25</UnloadPageFreememThreshold>
   </GeneralOptions>
</Settings>

Автор: LSD 7.7.2009, 19:24
Код

doc.setXmlStandalone(true);

Автор: anti_snayper 7.7.2009, 20:05
Спасибо. Помогло)

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)