GVKun编程网logo

由于移至Java 1.7 Xml Document Element不会缩进(由于java已在web中禁用,因此无法下载)

12

本文的目的是介绍由于移至Java1.7XmlDocumentElement不会缩进的详细情况,特别关注由于java已在web中禁用,因此无法下载的相关信息。我们将通过专业的研究、有关数据的分析等多种方

本文的目的是介绍由于移至Java 1.7 Xml Document Element不会缩进的详细情况,特别关注由于java已在web中禁用,因此无法下载的相关信息。我们将通过专业的研究、有关数据的分析等多种方式,为您呈现一个全面的了解由于移至Java 1.7 Xml Document Element不会缩进的机会,同时也不会遗漏关于ASP运行出错:缺少对象: 'xmlDoc.documentElement'错误解决方法、c# – 从XmlElement创建XPathDocument、C# 操作XML文件 XmlDocument和XElement、delphi – 通过TXMLDocument访问IXMLDOMDocument2?的知识。

本文目录一览:

由于移至Java 1.7 Xml Document Element不会缩进(由于java已在web中禁用,因此无法下载)

由于移至Java 1.7 Xml Document Element不会缩进(由于java已在web中禁用,因此无法下载)

我正在尝试缩进由Transformer生成的XML。除了第一个节点-
文档元素之外,所有DOM节点都按预期缩进。document元素不是以新行开头,只是在XML声明之后立即进行连接。

当我使用java 1.6或1.5时,当我移至java 1.7时会出现此错误。

我的代码:

ByteArrayOutputStream s = new OutputStreamWriter(out, "utf-8");TransformerFactory tf = TransformerFactory.newInstance();Transformer transformer = tf.newTransformer();transformer.setOutputProperty(OutputKeys.INDENT, "yes");transformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount","4");transformer.transform(new DOMSource(doc), new StreamResult(s));

输出:

<?xml version="1.0" encoding="UTF-8"?><a>       <b>bbbbb</b> </a>

有人知道为什么吗?

顺便说一句,当我添加属性时

transformer.setOutputProperty(OutputKeys.STANDALONE, "yes");

它按预期方式工作,但是xml声明已更改,它现在也具有独立属性,并且我不想更改xml声明。

答案1

小编典典

好 ,

我在Java API中发现了以下内容:

如果指定了doctype-system属性,则xml输出方法应在第一个元素之前输出文档类型声明。

所以我用了这个属性

 transformer.setOutputProperty(OutputKeys.DOCTYPE_PUBLIC, "yes");

它解决了我的问题,而没有更改我的xml声明。

谢谢。

ASP运行出错:缺少对象: 'xmlDoc.documentElement'错误解决方法

ASP运行出错:缺少对象: 'xmlDoc.documentElement'错误解决方法

原本运行正常的ASP页面,今天突然提示:
复制代码 代码如下:

Microsoft VBScript 运行时错误 错误 ''800a01a8''
缺少对象: ''xmlDoc.documentElement''
/work/Menu.asp,行 80

找到相关代码如下:
复制代码 代码如下:

Set xmlDoc=Server.CreateObject("MicroSoft.XmlDom")
xmlDoc.async = false
xmlDoc.load(Server.MapPath("Menu.xml"))
Set root = xmlDoc.documentElement.selectSingleNode("//index")

会不会是没有load成功呢?输出内容看下:
复制代码 代码如下:

Response.Write(xmlDoc.xml)

空的,能肯定是load出问题了。查看下Menu.xml,发现xml文件内容不知什么时候被改了:
复制代码 代码如下:

<?xml version="1.0" encoding="gb2312"?>
<index>
<catalog title="分类一">
<item id="class1_1"><![CDATA[<a href="class1_1.asp" target="main">子类11</a>]]></item>
<item id="class1_2"><![CDATA[<a href="class1_2.asp" target="main">子类12</a>]]></item>
</catalog>
</index>
><![CDATA[<a href="class2_3" target="main">子类23</a>]]></item>
</catalog>
</index>

修改下xml文件,再浏览页面就正常了。

c# – 从XmlElement创建XPathDocument

c# – 从XmlElement创建XPathDocument

我正在使用一个Web服务,它将一个XmlElement对象返回给我的C#程序.我想使用Xpath从XmlElement中读取信息.从XmlElement创建XPathDocument的最佳方法是什么?

解决方法:

你可以对XmlElement使用create a navigator directly并使用你的xpath导航器选择*方法,不需要XPathDocument.

C# 操作XML文件 XmlDocument和XElement

C# 操作XML文件 XmlDocument和XElement

首先在根目录下新建一个config.xml:

<?xml version="1.0" encoding="utf-8"?>
<Config>
    <Debug>
        <Lan>
            <Server Ip="142.12.10.123" Port="9601"/>
        </Lan>
        <Logger enable="false" />
    </Debug>
</Config>

 

XmlDocument位于System.Xml 下,是专门处理xml节点的

XElement位于System.Xml.Linq下,是可以对xml进行linq的查询操作的

 

分别使用XmlDocument和XElement获取节点的值:

using System;
using System.IO;
using System.Reflection;
using System.Xml;
using System.Xml.Linq;

namespace FileXml
{
    class Program
    {
        static void Main(String[] args)
        {
            //获取xml路径
            var current_dir = Path.GetDirectoryName(Assembly.GetEntryAssembly().Location);
            var xml_path = Path.Combine(current_dir, @"config.xml");

            //使用XElement快速获取节点值
            XElement xmlElement = XElement.Load(xml_path);
            String IP = xmlElement.Element("Debug").Element("Lan").Element("Server").Attribute("Ip").Value.ToString();
            Console.WriteLine(IP);
            bool isLogger = xmlElement.Element("Debug").Element("Logger").Attribute("enable").Value == "true";
            Console.WriteLine(isLogger);



            //使用XElement快速获取节点值
            XmlDocument xml_doc = new XmlDocument();
            xml_doc.Load(xml_path);
            var IP2 = xml_doc.SelectSingleNode("/Config/Debug/Lan/Server").Attributes["Ip"].Value;
            var IP2_name = xml_doc.SelectSingleNode("/Config/Debug/Lan/Server").Attributes["Ip"].Name;
            Console.WriteLine(IP2_name+":"+ IP2);
            bool isLogger2 = xml_doc.SelectSingleNode("/Config/Debug/Logger").Attributes["enable"].Value == "true";
            Console.WriteLine(isLogger2);
            Console.ReadLine();
        }
    }
}

 

总结:如果是简单查询 总体上来说两者差不多

感觉还是XmlDocument.SelectSingleNode(XPath)更方便一些

普通用XmlDocument就够了

 

 

 

 

 

Xml单例管理类:

using System;
using System.IO;
using System.Reflection;
using System.Xml;

namespace FileXml
{
    class Program
    {
        static void Main()
        {
            var ip = XmlManager.instance.XmlDoc.SelectSingleNode("/Config/Debug/Lan/Server").Attributes["Ip"].Value;
            var ip_name = XmlManager.instance.XmlDoc.SelectSingleNode("/Config/Debug/Lan/Server").Attributes["Ip"].Name;
            Console.WriteLine($"{ip_name} : {ip}");
            bool isLogger = XmlManager.instance.XmlDoc.SelectSingleNode("/Config/Debug/Logger").Attributes["enable"].Value == "true";
            Console.WriteLine(isLogger);
            Console.ReadLine();
        }
    }

    public class XmlManager
    {
        private static XmlManager _instance = null;
        public static XmlManager instance
        {
            get
            {
                if (_instance == null)
                {
                    return new XmlManager();
                }
                return _instance;
            }
        }

        private XmlDocument _xml_doc = null;
        public XmlDocument XmlDoc
        {
            get
            {
                if (_xml_doc == null)
                {
                    var current_dir = Path.GetDirectoryName(Assembly.GetEntryAssembly().Location);
                    var xml_path = Path.Combine(current_dir, @"config.xml");
                    _xml_doc = new XmlDocument();
                    _xml_doc.Load(xml_path);
                }
                return _xml_doc;
            }
        }
    }
}

 

delphi – 通过TXMLDocument访问IXMLDOMDocument2?

delphi – 通过TXMLDocument访问IXMLDOMDocument2?

我有一些使用Delphi的T XMLDocument类的工作代码,并使用TransformNode方法执行XSLT转换.

但是,我需要启用XSLT Javascript函数(< msxml:script>标记)和 – 经过大量谷歌搜索 – 这意味着我需要将IXMLDOMDocument2的AllowXsltScript属性设置为true.

http://msdn.microsoft.com/en-us/library/windows/desktop/ms760290(v=vs.85).aspx

我已经成功实现了这一点 – 但只能通过在msxmldom.pas中修改Delphi库函数CreateDOMDocument的源代码.

function CreateDOMDocument: IXMLDOMDocument;
var doc :IXMLDOMDocument2;
begin

  doc := TryObjectCreate([CLASS_DOMDocument60,CLASS_DOMDocument40,CLASS_DOMDocument30,CLASS_DOMDocument26,msxml.CLASS_DOMDocument]) as IXMLDOMDocument2;
  if not Assigned(doc) then
    raise DOMException.Create(SMSDOMnotinstalled);
  doc.setProperty('AllowXsltScript',true);  // Allow XSLT scripts!!
  Result := doc;
end;

显然这远非令人满意 – 所以如何在不修改库代码的情况下访问IXMLDOMDocument2对象?

解决方法

您可以通过MSXMLDOMDocumentCreate变量覆盖create函数:

unit Unit27;

interface

uses
  xmldoc,xmlintf,msxml,msxmldom,Forms,SysUtils,ActiveX,ComObj,XmlDom,XmlConst,Windows,Messages,Classes,Controls,StdCtrls;

type
  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

function TryObjectCreate(const GuidList: array of TGuid): IUnkNown;
var
  I: Integer;
  Status: HResult;
begin
  Status := S_OK;
  for I := Low(GuidList) to High(GuidList) do
  begin
    Status := CoCreateInstance(GuidList[I],nil,CLSCTX_INPROC_SERVER or
      CLSCTX_LOCAL_SERVER,Idispatch,Result);
    if Status = S_OK then Exit;
  end;
  OleCheck(Status);
end;

function CreateDOMDocument2: IXMLDOMDocument;

var
  Doc2 : IXMLDOMDocument2;

begin
  Doc2 := TryObjectCreate([CLASS_DOMDocument60,msxml.CLASS_DOMDocument]) as IXMLDOMDocument2;
  if not Assigned(Doc2) then
    raise DOMException.Create(SMSDOMnotinstalled);
  Doc2.setProperty('AllowXsltScript',true);
  Result := Doc2;
end;


procedure TForm1.FormCreate(Sender: TObject);

var
 Doc : IXMLDocument;

begin
 Doc := TXMLDocument.Create(nil);
 Doc.LoadFromFile('c:\temp\test.xml');
end;


initialization
 MSXMLDOMDocumentCreate := CreateDOMDocument2;
end.

关于由于移至Java 1.7 Xml Document Element不会缩进由于java已在web中禁用,因此无法下载的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于ASP运行出错:缺少对象: 'xmlDoc.documentElement'错误解决方法、c# – 从XmlElement创建XPathDocument、C# 操作XML文件 XmlDocument和XElement、delphi – 通过TXMLDocument访问IXMLDOMDocument2?等相关知识的信息别忘了在本站进行查找喔。

本文标签:

上一篇仅在 GitHub 上发送拉取请求以获取最新提交(github仅自己可见)

下一篇无法为连接URL'null'创建类''的JDBC驱动程序:Tomcat&SQL Server JDBC驱动程序(无法创建链接服务器null的ole db访问接口)