标签: xmlnode

XML中的元素和节点之间有什么区别?

我正在用Java工作,我很想知道; 元素和节点之间有什么区别?

xml xmlnode

354
推荐指数
8
解决办法
21万
查看次数

如何使用C#中的XmlDocument和XmlNode修改现有的XML文件

我已经实现了在应用程序初始化时使用XmlTextWriter创建下面的XML文件.

并且知道我不知道如何使用XmlDocumentXmlNode更新childNode id值.

是否有一些属性来更新id值?我试过InnerText但是失败了.谢谢.

<?xml version="1.0" encoding="UTF-8"?>
<Equipment xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <License licenseId="" licensePath=""/>
  <DataCollections>
    <GroupAIDs>
      <AID id="100">
        <Variable id="200"/>
        <Variable id="201"/>
      </AID>
      <AID id="">
        <Variable id="205"/>
      </AID>
      <AID id="102"/>
    </GroupAIDs>
    <GroupBIDs>
      <BID id="2000">
        <AID id="100"/>
      </BID>
      <BID id="2001">
        <AID id="101"/>
        <AID id="102"/>
      </BID>
    </GroupBIDs>
    <GroupCIDs>
      <BID id="8"/>
      <BID id="9"/>
      <BID id="10"/>
    </GroupCIDs>
  </DataCollections>
</Equipment>
Run Code Online (Sandbox Code Playgroud)

c# xml xmldocument xmlnode

34
推荐指数
1
解决办法
9万
查看次数

将XElement转换为XmlNode

我知道没有直接的方法,但仍然..我们可以将XElement元素转换为XmlNode.类似的选项InnerText,并InnerXmlXmlNode具体的.

所以,如果我想使用这些选项,可以做什么来转换 XElementXmlNode反之亦然.

c# xml linq xelement xmlnode

23
推荐指数
2
解决办法
4万
查看次数

修改C#中的XML现有内容

目的:我计划使用XmlTextWriter创建XML文件,并使用XmlNode SelectSingleNode(),node.ChildNode [?]修改/更新一些现有内容.InnerText = someting等.

用XmlTextWriter创建XML文件后,如下所示.

XmlTextWriter textWriter = new XmlTextWriter("D:\\learning\\cs\\myTest.xml", System.Text.Encoding.UTF8);
Run Code Online (Sandbox Code Playgroud)

我练习下面的代码.但未能保存我的XML文件.

XmlDocument doc = new XmlDocument();
doc.Load("D:\\learning\\cs\\myTest.xml");

XmlNode root = doc.DocumentElement;
XmlNode myNode;

myNode= root.SelectSingleNode("descendant::books");
Run Code Online (Sandbox Code Playgroud)

....

textWriter.Close();

doc.Save("D:\\learning\\cs\\myTest.xml");  
Run Code Online (Sandbox Code Playgroud)

我发现按照我的方式生产是不好的.有什么建议吗?我不清楚同一个项目中XmlTextWriter和XmlNode的概念和用法.感谢您阅读和回复.

c# xml xmlnode xmltextwriter

20
推荐指数
4
解决办法
10万
查看次数

在C#中,如何使用缩进将XmlNode转换为字符串?(没有循环)

这必须是一个如此简单的问题,但我无法得到答案.

我有一个XmlNode,我想要做的就是输出这个节点,作为一个字符串,缩进(制表符或空格)完整,以提供更好的可读性.

到目前为止,我尝试了XmlWriter,XmlTextWriter,XmlDocument,XmlReader.

  • 我在XmlDocument中尝试了PreserveWhitespace但是我无法让XmlDocument输出我的节点.
  • 我在XmlTextWriter中尝试了Formatting = Formatting.Indented属性,但我无法弄清楚如何将内容输出到字符串.

将XmlNode输出为字符串WITHOUT缩进很容易.我只是做XmlNode.OuterXml.我如何在那里得到缩进?

我想这样做而不通过XmlNode循环并使用强力来添加空格,因为我认为应该有一个更简单的方法.

谢谢.

编辑:对于未来的读者,这里是答案:

  var xmlNode = is some object of type XmlNode

  using (var sw = new StringWriter())
  {
      using (var xw = new XmlTextWriter(sw))
      {
        xw.Formatting = Formatting.Indented;
        xw.Indentation = 2; //default is 1. I used 2 to make the indents larger.

        xmlNode.WriteTo(xw);
      }
      return sw.ToString(); //The node, as a string, with indents!
  }
Run Code Online (Sandbox Code Playgroud)

我需要这样做的原因是输出节点的xml语法高亮.我使用AvalonEdit突出显示xml,将突出显示的文本输出到html,然后将html转换为可以在RichTextBox中显示的FlowDocument.

c# xml string xmlnode indentation

20
推荐指数
2
解决办法
2万
查看次数

如何使用java获取xml节点的属性值

我有一个看起来像这样的xml:

{ <xml><ep><source type="xml">...</source><source type="text">..</source></ep></xml>}
Run Code Online (Sandbox Code Playgroud)

在这里,我想检索"源类型"的值,其中类型s属性.

我试过这样,但它不起作用:

 DocumentBuilderFactory domFactory = DocumentBuilderFactory.newInstance();
                try {
                    DocumentBuilder builder = domFactory.newDocumentBuilder();
                    Document dDoc = builder.parse("D:/workspace1/ereader/src/main/webapp/configurations/config.xml");
                    System.out.println(dDoc);
                    XPath xPath = XPathFactory.newInstance().newXPath();
                    Node node = (Node) xPath.evaluate("//xml/source/@type/text()", dDoc, XPathConstants.NODE);
                    System.out.println(node);
                } catch (Exception e) {
                    e.printStackTrace();
Run Code Online (Sandbox Code Playgroud)

我也试过这个:

DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
            DocumentBuilder builder = factory.newDocumentBuilder();
            InputSource is = new InputSource(new StringReader("config.xml"));
            Document doc = builder.parse(is);

            NodeList nodeList = doc.getElementsByTagName("source");

            for (int i = 0; i < nodeList.getLength(); i++) {                
                Node node = nodeList.item(i);

                if (node.hasAttributes()) { …
Run Code Online (Sandbox Code Playgroud)

java xml xmlnode xml-attribute

18
推荐指数
1
解决办法
9万
查看次数

将org.w3c.dom.Node转换为Document

我有Node一个Document.我想把Node它转换成新的根节点Document.

我能想到的唯一方法如下:

Node node = someChildNodeFromDifferentDocument;

DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
factory.setNamespaceAware(true);

DocumentBuilder builder = factory.newDocumentBuilder();

Document newDocument = builder.newDocument();
newDocument.importNode(node);
newDocument.appendChild(node);
Run Code Online (Sandbox Code Playgroud)

这是有效的,但我觉得这是相当恼人的冗长.我没有看到更简洁/更直接的方式,还是我必须这样做?

java xmlnode domdocument

15
推荐指数
2
解决办法
2万
查看次数

使用Java更改xml-node的节点名称

我有以下场景:我有一个XML文档,例如像这样

<someRootElement>
<tag1>
    <tag2 
        someKey=someValue
        someKey2=someValue2
    />
    <tag3/>
    <tag4
        newKey=newValue
        newKey2=newValue2
    />
</tag1>
</someRootElement>
Run Code Online (Sandbox Code Playgroud)

现在我希望在不丢失子节点的情况下将父tag1调用为reallyCoolTag.我尝试了以下内容,但不幸的是它不能按照我的意愿工作(但我知道为什么,b/c它缺少了一些东西,我猜):

// the new element:
Element neu = doc.createElement( newValue );
// append it to the root:
root.appendChild( neu );
// get all the child nodes:
NamedNodeMap nnm = nodes.item(i).getAttributes();
for( int dg = 0; dg < nnm.getLength(); dg++ ){
    neu.setAttribute(  nnm.item( dg ).getNodeName(),
    nnm.item( dg ).getNodeValue() );
}
//---------------------------------------------------------
// HERE I GUESS I AM MISSING THE PART WHERE THE CHILD …
Run Code Online (Sandbox Code Playgroud)

java xml xmlnode

14
推荐指数
1
解决办法
3万
查看次数

如何加载XmlNode对象忽略未声明的命名空间?

我想在存在无法识别的命名空间时加载XmlNode而不会获得XmlException.

原因是我需要将XMLNode实例传递给方法.我正在加载具有其原始上下文中的命名空间的任意XML片段(例如,MSWord格式化和其他具有各种模式的软件产品,这些模式使用其名称空间前缀"污染"内容).命名空间对我或它传递的目标方法并不重要.(这是因为目标方法使用它作为HTML进行渲染,名称空间将被自然地忽略或抑制.)

示例
以下是我尝试创建XMLNode的示例片段:

 <p>
 <div>
     <st1:country-region w:st="on">
     <st1:place w:st="on">Canada</st1:place>
     </st1:country-region>
     <hr />
     <img src="xxy.jpg" />
 </div>
 </p>
Run Code Online (Sandbox Code Playgroud)

当我尝试将其加载到XmlDocument实例(这是我尝试获取XmlNode)时,我得到以下XML异常:

'st1'是未声明的命名空间.第3行,第251位.

如何从这种XML片段中获取XmlNode实例?

.net c# xml xmlnode

12
推荐指数
1
解决办法
9319
查看次数

获取节点和计数节点的总数

是否有可能获得XML节点的总数?

另外,如何使用XSLT进行for语句?

xml xslt xmlnode count

11
推荐指数
1
解决办法
3万
查看次数